gpt4 book ai didi

java - 无法使用 Hibernate 更新实体

转载 作者:行者123 更新时间:2023-12-01 22:39:46 24 4
gpt4 key购买 nike

我正在将 Hibernate 与 JPA 带注释的实体一起使用,并且我希望更新实体的“raw_text”字段的下一个代码不会更改它。如何实现预期的行为?

@Override
public void updatePageWithText(String pageName, String rawText) {
Session session = HibernateUtils.getInstance().openSession();
String hql = "FROM WikiPage M WHERE M.name = :name";
Query query = session.createQuery(hql);
query.setParameter("name",pageName);

WikiPage res = null;
try {
res = (WikiPage) query.list().get(0);
res.setRawText(rawText);
session.update(res);
session.flush();
}
catch (IndexOutOfBoundsException e) {}
finally {
session.close();
}

}

最佳答案

尝试以下操作:

@Override
public void updatePageWithText(String pageName, String rawText) {
Session session = HibernateUtils.getInstance().openSession();
Transaction transaction=session.beginTransaction();
String hql = "FROM WikiPage M WHERE M.name = :name";
Query query = session.createQuery(hql);
query.setParameter("name",pageName);

WikiPage res = null;
try {
res = (WikiPage) query.list().get(0);
res.setRawText(rawText);
transaction.commit();
}
catch (IndexOutOfBoundsException e) {
transaction.rollback();
}
finally {
session.close();
}

}

注意:当您从查询中获取 WikiPage 时,它​​仍然是一个附加实体,因此您不需要触发 session.update()committing 交易 就可以了。

关于java - 无法使用 Hibernate 更新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com