关于hibernate获取session缓存中内容的问题

我现在想实现一个功能就是我将一个对象用hibernateTemplate.save()的方法进行操作,然后我想获得该对象在数据库中的ID,于是我这么写:
public int add(FeatureRelationship featureRelationship) {
hibernateTemplate.save(featureRelationship);
return featureRelationship.getID();
}

但是貌似不能获取,hibernate不是在save的时候是将需要执行的sql语句存入缓存么?那么我能不能在session关闭之前将缓存中的id取出来么?请大大们指教!!

3个回答

你给你的实体主键ID设置一个增长 策略了吗,

如果有的话,应该 是执行hibernateTemplate.save(featureRelationship); 后
hiberante就把主键ID值自动赋予实体featureRelationship,

然后你就可以通过 featureRelationship.getID(); 取得他的主键ID值了

不行的话你就把Hiberante的显示 SQL功能 打开,看执行到hibernateTemplate.save(featureRelationship)时
后台有没有打印SQL

在Session关闭前获取ID是可以的,执行了SAVE过后就有ID了

featureRelationship.getID 根本取不到ID,因为你的featureRelationship 是你传入的参数,而参数在保存之前ID根本就没有值,即使你保存了之后featureRelationship还是你开始传入的ID还是为空啊,如果想获取ID你可以重新再数据库查ID最大的那个(即使你刚才save的那个值)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问