相信很多朋友都跟我一样对ejb3获取自增id有困惑,我自己也烦恼了很久。
网络上很多人都说
public Integer add(Object p) {
em.persist(p);
em.flush();
return p.getId();
}
这种方法可以获取到自增的id
我尝试过这种方法获取自增的id,但是我获取的id与数据库序列自增的id不同
最后谷歌了一下,发现只要把触发器定义在实体bean就能够用上面的代码获取自增id
@Id
@SequenceGenerator(name = "paper_question",sequenceName = "PAPAER",allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "paper_question")
private Integer id;
其中@SequenceGenerator中的name就相当于数据库的触发器的名字,sequenceName与数据库的序列相对应
@GeneratedValue中的generator与上面定义的触发器相对应,
另外在ejb上定义了触发器就不用再数据库上定义触发器了,要不就会每插入一条数据id就会增加2次。
这是我第一次写博客,写得不好的话欢迎大家评论或者提出更好的意见