Ejb3.0 获取自增主键

来源:互联网 发布:java 异常处理机制5种 编辑:程序博客网 时间:2024/06/05 16:23

相信很多朋友都跟我一样对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次。

这是我第一次写博客,写得不好的话欢迎大家评论或者提出更好的意见


0 0