3

我有名为 Driver 的实体类,我的主键生成机制是

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Long id; 

现在我需要在Driver中添加“driverCode”属性,它应该是带前缀的唯一值(dri1,dri2),“dri”是前缀值,key应该是Driver的主键值,我想添加第一次创建驱动程序时的驱动程序代码,为此我需要获取最后插入的驱动程序的主键,添加一个,并与前缀连接,任何人都可以告诉如何在插入新的之前获取最后插入的记录的主键记录,有什么简单的方法吗?

先感谢您,

4

2 回答 2

7

如果flush()您是EntityManger,则该@Id字段将填充即将保存到数据库中的值,因此您无需查找最后插入的值,因为您已经知道当前插入的值:

EntityManger em;
Driver d = new Driver();
em.persist(d);
em.flush();
long id = d.getId(); // this will give you the current record's id


此外,“获取最后插入的 id”非常棘手和危险;它远没有看起来那么简单。

于 2012-09-09T02:36:55.080 回答
3

对我有用的那个

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {
    return id;
}

那么你也能

object.getId();
于 2016-05-16T10:44:24.217 回答