1
我遇到了问题,试图选择更新行使用Hibernate的Spring数据作为JPA实现和Postgresql。休眠Postgresql选择更新与外连接问题
假设我们有实体:A,B,C。
public class A{
@Id
private Long id;
@OneToMany(fetch = FetchType.EAGER)
private Set<B> bSet;
@OneToMany(fetch = FetchType.EAGER)
private Set<C> cSet;
}
假设我们希望与所有相关的B和C实体更新即具有锁定相关的表行来选择。
@Query(SELECT a FROM A a
LEFT JOIN FETCH a.bSet
LEFT JOIN FETCH a.cSet
WHERE a.id=?)
@Lock(LockModeType.PESSIMISTIC_WRITE)
public A selectAndLockA(Long Aid);
查询将看起来像
SELECT a.column1, ... from tableA a LEFT JOIN tableB b ... FOR UPDATE of a,c
为一个UPDATE,C
查询将试图锁定两个表是什么导致的异常,如: org.postgresql .util.PSQLException:错误:FOR UPDATE不能应用于外连接的可空侧
我试图归档的只是锁定第一个表“FOR UPDATE OF a”
是否可以配置某种方式或让Hibernate锁定第一个表。