我有3种方式将内容写入数据库
public void create(T object) { entityManager.persist(object); } public void update(T object) { object = entityManager.merge(object); } public int updateStatus(String id, String status) { final int changes = entityManager.createQuery("update item set state = :newState," + " last_modified = current_timestamp" + " where id = : id ") .setParameter("newState", status) .setParameter("id", id) .executeUpdate(); return changes; }
我遇到的问题是为了让Hibernate Envers实际将审计记录写入相应的x_aud和revinfo DB表中。它仅适用于“ .persist()”或“ .merge()”。我无法使其适用于’createQuery(…). executeUpdate() ‘
我是否缺少某些东西,或者只是无法使用?问题是,我的很多代码都是使用.executeUpdate编写的而不是合并的,所以我真的需要使用它来处理现有代码。
有人可以帮忙吗?
看起来 Avinash T. 是正确的-如果要创建本机SQL查询,请使用的createNativeQuery(String sqlString)方法EntityManager。使用createQuery(String ejbqlString)如果您正在使用EJB QL是唯一可能的。希望这会有所帮助。
createNativeQuery(String sqlString)
EntityManager
createQuery(String ejbqlString)