List <Student> st = session.createQuery ("select ids from students where a = :a")
                        .setString("a", value)
                        .list();

//Errors out saying that ArrayList is an unknown entity
session.lock(st, LockMode.UPGRADE);

学生本身扩展了可序列化。如何在Hibernate中锁定可序列化的数组列表?

最佳答案

您需要浏览列表并一一锁定实体。

for(Student s : st) {
  session.lock(s, LockMode.UPGRADE);
}

注意:不赞成使用Session#lock(java.lang.Object, org.hibernate.LockMode),而建议使用session.buildLockRequest(LockMode.UPGRADE).lock(student)

更新:
您也可以通过Query.setLockMode(java.lang.String, org.hibernate.LockMode)直接锁定在查询上。

10-07 12:09