NutzCN Logo
问答 动态表名只是查询才生效吗?
发布于 3159天前 作者 lglgxu2008 2047 次浏览 复制 上一个帖子 下一个帖子
标签:

调用代码:

		final UUID uuid = UUID.randomUUID();
		TableName.run(uuid.toString(), new Runnable() {
			public void run() {
				dao2.create(Term.class, true);
				List<Term> termList = termService.query(null, null);
				for (Term term : termList) {
					dao2.insert(term, FieldFilter.create(Term.class, FieldMatcher.create(false)));
				}
				String tableName = Daos.getTableName(dao2, Term.class, uuid.toString());
				dao2.drop("t_term");
				dao2.execute(Sqls.create("rename table " + tableName + " to t_term;"));
			}
		});

Term的注解:

@Table("t_term${guid}")
9 回复

作用域内均有效

我的调用代码里没有表名还是t_term,传过去的uuid没有生效,是什么原因呢?

@wendal

@Table("t_term${guid}")//模板必须要有下划线分隔吗?

@wendal
上述调用代码里,执行到dao2.create(Term.class, true)时,日志如下:

DROP TABLE t_term
Table 't_term' doesn't exist!
CREATE TABLE t_term(
id SERIAL,
name VARCHAR(50),
pageId NUMERIC(16),
parentId NUMERIC(16),
ordinal NUMERIC(8),
isDeleted BOOLEAN,
meta VARCHAR(50),
createTime TIMESTAMP,
createUserScenceId NUMERIC(16),
updateTime TIMESTAMP,
updateUserScenceId NUMERIC(16),
CONSTRAINT t_term_pkey PRIMARY KEY (id)
)

调试时String tableName = Daos.getTableName(dao2, Term.class, uuid.toString());tableName依然是"t_term"

@Table这个注解是不是import错了?

@Table("t_term${guid}")

@wendal

import应该没有错

import org.nutz.dao.entity.annotation.Table

试试把

@Table("t_term${guid}")

改成

@Table("abc${guid}")

我猜还是输出 t_term

@wendal 谢谢兽总,解决了,是我本地eclipse代码缓存的问题。

添加回复
请先登陆
回到顶部