考虑我的数据库表主键是自动递增还是使用序列,hibernate如何在调用save()方法后立即获得新插入记录的主键。
只是想知道hibernate层和DB层之间的内部通信。
每个数据库供应商(MySQL,Oracle等)将有一个自定义的Dialect实现(例如MySQLDialect或OracleDialect)所以你可能最好poke through that code
我在Oracle9Dialect.java看到以下内容
@Override
public String getSequenceNextValString(String sequenceName) {
return "select " + getSelectSequenceNextValString( sequenceName ) + " from dual";
}