如何在更新查询中强制Hibernate使用AND?

时间:2019-02-22 17:11:43

标签: java hibernate mariadb

我正在尝试使用休眠方式通过复合主键更新原始文件。

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事务,则第一个查询将锁定整个表以进行更新,而第二个查询将仅锁定一行以进行更新。

我只希望锁定一行,所以我需要使用第二个查询。

1 个答案:

答案 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)

尝试一下。