mysql/grails:如何在新创建的实体上调用entity.save()(不刷新)时初始化实体id?

x7yiwoj4  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(152)

我正在使用mysql和grails。
假设我有一个实体类 Book , book mysql中的表具有
auto_incremented id 列。
下面是我的服务方法:

@Transactional
public void someMethod() {
    Book book = new Book("Book Name", "Author Name") // book.id is null here 
    book.save();
    println book.id // id is initialized
}

当我停下来 println 语句使用调试器我看到了 bookid 属性已初始化。因为我不是 flushing db行中的任何内容都尚未插入db,因此 id 不是在插入时生成的,而是以其他方式生成的。一种可能的方法 id 可能是hibernate运行一个查询只是为了获取下一个 auto_incrementsave() 方法在实体上执行(不确定是否是这种情况)。如果是这样的话,那么两个并发事务获得相同的id呢??

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题