我正在尝试使用休眠方式通过复合主键更新原始文件。
Hibernate使用下一种样式进行此类更新:
update mytable set mycolumn=321 where (left_pk, right_pk) = (123, 456);
是否可以强制休眠使用下一种样式?:
update mytable set mycolumn=321 where left_pk = 123 and right_pk = 456;
这两个查询都可以工作,但是差别很大(至少在MariaDB中如此)。
如果我们使用repeatable read
事务,则第一个查询将锁定整个表以进行更新,而第二个查询将仅锁定一行以进行更新。
我只希望锁定一行,所以我需要使用第二个查询。
答案 0 :(得分:0)
您可以在Hibernate中使用NamedQueries
方法,
例如:
//Create Query
@NamedQueries({ @NamedQuery(name = " YOUR QUERY NAME",
query = "from DeptEmployee where department = :department and emp = :emp") })
// set multiple parameters
query.setParameter("department",department)
.setParameter("emp", emp)
尝试一下。