NutzCN Logo
问答 实体类使用@prev注解没有效果
发布于 3348天前 作者 qq_6d1ec279 2448 次浏览 复制 上一个帖子 下一个帖子
标签: dao

@Column("f_id")
@Prev({
@SQL(db=DB.ORACLE,value="select seq_t_q_quottime_config.currval from dual")
})
private Long id;

以上是代码部分,数据库是oracle,id是数据库的主键,通过序列设置值,在使用dao().insert(entity)方法时没有 看了下生成的sql没有f_id这个字段
请问这个是由于什么原因导致的

8 回复

INSERT INTO t_time_config(f_status,f_effect_time,f_begin_time,f_end_time) VALUES(?,?,?,?) '
没有fid这个字段

@qq_6d1ec279 是不是还写了@Id,改成@Id(auto=false)

@wendal 写@Id(auto=false)的话,如果是SqlServer数据库@Prev怎么写?

@yong9664

例如

 select max(id)+1 from xxx

其实用触发器也不错的

@wendal 这样在并发时可能会出现重复吧。。。
SqlServer特性自增列,不写@Prev行不行?

@yong9664 你是想同时兼容两者?

并发没问题的,会在一个事务内完成

想了一个方法, 生成一个合适的字段过滤正则表达式

dao.getEntity(pojo.getClass())
然后遍历里面的Field, 判断是否为null, 且不带@Prev属性

这些属性的name, 组成一个正则表达式, 就可以了

@wendal 是的写了@id ,那我改成@Id(auto=false)

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