我现在想实现一个功能就是我将一个对象用hibernateTemplate.save()的方法进行操作,然后我想获得该对象在数据库中的ID,于是我这么写:
public int add(FeatureRelationship featureRelationship) {
hibernateTemplate.save(featureRelationship);
return featureRelationship.getID();
}
但是貌似不能获取,hibernate不是在save的时候是将需要执行的sql语句存入缓存么?那么我能不能在session关闭之前将缓存中的id取出来么?请大大们指教!!
你给你的实体主键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的那个值)