我正在使用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
语句使用调试器我看到了 book
的 id
属性已初始化。因为我不是 flushing
db行中的任何内容都尚未插入db,因此 id
不是在插入时生成的,而是以其他方式生成的。一种可能的方法 id
可能是hibernate运行一个查询只是为了获取下一个 auto_increment
当 save()
方法在实体上执行(不确定是否是这种情况)。如果是这样的话,那么两个并发事务获得相同的id呢??
暂无答案!
目前还没有任何答案,快来回答吧!