我有一个数据,如果已存在,我想要保存或更新。 所以saveOrUpdate()但仅限于我知道主键。
我可以从数据库中调用select来查找id,在每个任务之前,但是有更好的方法吗?
编辑:
基本上我有电视剧剧集的数据库表(1000多个对象)。当我所谓的订购电视节目并想要将60集的剧集添加到数据库时,我必须在每一集插入之前进行if检查(选择呼叫以接收主键)。听起来应该是这样吗?
答案 0 :(得分:0)
如果您事先知道主键,并且您确定存在具有该PK的行,则可以使用
Session.get(Serializable id)
代替Session.load(Serializable id)
; get()
将创建一个desidered类型的对象,而不会访问数据库
在其他情况下,如果没有@Entity
,您将无法拥有@Id
(在Hibernate启动期间会出现错误)因此如果您使用的是Session.saveOrUpdate(obj)
,则您拥有obj
主键,按设计。