0

DBテーブルからデータを抽出する次の方法があります

    public User getNextUser() {
            final EntityManager em = getEntityManagerFactory().createEntityManager();

            final String sql = "UPDATE user " +
                    "SET processing = TRUE " +
                    "WHERE id = (" +
                                "SELECT id " +
                                "FROM user  " +
                                "WHERE processing = FALSE " +
                                "LIMIT 1 FOR UPDATE) " +
                    "RETURNING *";

            final Query query =  em.createNativeQuery(sql, User.class);
            User result = null;

            try {
                List userList = query.getResultList();
                if (!userList.isEmpty()) {
                    result = (User) userList.get(0);
                }
            } finally {
                em.close();
            }
            return result;
}

このネイティブ クエリを Hibernate クエリに変換するにはどうすればよいですか (第 2 レベルのキャッシュを無効にしないため)。私はそれに相当するものを読みました

SELECT ... FOR UPDATE

Hibernate では、次の方法で実装できます。

PESSIMISTIC_WRITE

4

0 に答える 0