我需要锁定表的行以供其他Transaction读取。 手段, 如果事务1读取表1的少量记录,则Transaction2
不应读取这些行我有以下环境 1. MySQL 2. Jboss 5.1 3. JPA 1.0
请告诉我你的建议
我正在使用本机查询选择更新 查询createNativeQuery = entityManager.createNativeQuery("从cscache中选择id,其中id =?for update");
但是它给出了以下错误
2014-12-12 09:35:42,326错误[org.hibernate.util.JDBCExceptionReporter]你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在“限制2”附近使用正确的语法。在第1行(http-0.0.0.0-8543-5:)
答案 0 :(得分:0)
答案 1 :(得分:0)
SELECT FOR UPDATE应该可以解决问题。
YourClass c = em.find(YourClass.class, yourId,
LockModeType.PESSIMISTIC_WRITE);
或
TypedQuery<Table> q = em.createQuery("select t from Table t where ...", Table.class);
q.setLockMode(LockModeType.PESSIMISTIC_WRITE);