NutzCN Logo
问答 nutz使用@Id注解,自动生成的表id字段不自增也不设置主键,插入数据id字段没有值。
发布于 2800天前 作者 呓语黄昏 3848 次浏览 复制 上一个帖子 下一个帖子
标签:
@Id(auto=false)
    @Prev(els=@EL("ig(view.tableName)"))
    private int id;
直接@Id也不生效,不知道怎么回事。没有添加@Name注解有影响吗?
12 回复

@Id(auto=false) 的含义是,是主键,但不自增. 跟@Name没有关系.

没有值是什么意思? 这是一个int, 起码插入个0.

是不是原本就有表,删掉让nutz来建.

有删掉原来的表,就是莫名其妙的不生成主键。其他地方也正常,就是在这个项目出 这问题,所以特别奇怪。

10:32:16.308 DEBUG (AbstractJdbcExpert.java:108) setupEntityField - Table 't_user_gameinfo' doesn't exist!
10:32:16.339 DEBUG (NutDaoExecutor.java:388) printSQL - CREATE TABLE t_user_gameinfo(userId INT(32),gameInfoId INT(32))
10:32:16.694 DEBUG (DaoTimeInterceptor.java:28) filter - time=354ms, sql=CREATE TABLE t_user_gameinfo(userId INT(32),gameInfoId INT(32))
10:32:16.722 DEBUG (Scans.java:262) scan - Found 57 resource by src( net/wendal/nutzbook/bean/ ) , regex( ^.+[.]class$ )
10:32:16.751 DEBUG (Scans.java:262) scan - Found 57 resource by src( net/wendal/nutzbook/bean/ ) , regex( ^.+[.]class$ )
10:32:16.826 INFO  (Daos.java:128) getColumnIndex - Can not find @Column(id) in table/view (t_user_gameinfo)
10:32:16.826 INFO  (Daos.java:128) getColumnIndex - Can not find @Column(ct) in table/view (t_user_gameinfo)
10:32:16.826 INFO  (Daos.java:128) getColumnIndex - Can not find @Column(ut) in table/view (t_user_gameinfo)
10:32:16.827 INFO  (Daos.java:792) invoke - add column[id] to table[t_user_gameinfo]
10:32:16.827 INFO  (Daos.java:792) invoke - add column[ct] to table[t_user_gameinfo]
10:32:16.828 INFO  (Daos.java:792) invoke - add column[ut] to table[t_user_gameinfo]
10:32:16.831 DEBUG (NutDaoExecutor.java:388) printSQL - ALTER TABLE t_user_gameinfo ADD COLUMN id INT(32)
10:32:17.206 DEBUG (DaoTimeInterceptor.java:28) filter - time=375ms, sql=ALTER TABLE t_user_gameinfo ADD COLUMN id INT(32)
10:32:17.207 DEBUG (NutDaoExecutor.java:388) printSQL - ALTER TABLE t_user_gameinfo ADD COLUMN ct DATETIME
10:32:17.540 DEBUG (DaoTimeInterceptor.java:28) filter - time=333ms, sql=ALTER TABLE t_user_gameinfo ADD COLUMN ct DATETIME
10:32:17.540 DEBUG (NutDaoExecutor.java:388) printSQL - ALTER TABLE t_user_gameinfo ADD COLUMN ut DATETIME
10:32:17.857 DEBUG (DaoTimeInterceptor.java:28) filter - time=317ms, sql=ALTER TABLE t_user_gameinfo ADD COLUMN ut DATETIME

有建表语句的日志

t_user_gameinfo 这个表??

嗯,我就截取了这个表的日志

我感觉有另外一个bean也是这个表, 不然怎么会建好了马上merge新增字段呢?

继承不会导致这样的. debug一下setupEntityField 方法, 看看是根据哪个类进行建表了, 而且仅2个属性,很神奇

已找到可能的原因,让nutz自动建表,默认扫描包的路径是从上往下,扫描到实体类时如果有多对多的关联关系会建立中间表。如果在后面又添加了中间表的实体类,即使添加上@Id注解也会当表的补充字段处理,而不是当主键。因此生成的id只是普通的补充字段,没有主键约束及自增也就说的通了。

噢,那先把这个bean建表了就解决了,调用dao.create

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