【发布时间】:2018-06-20 06:28:52
【问题描述】:
我正在使用 Spring Boot 和休眠。我有一个命名查询,我在其中选择一个项目。然后我想设置一些属性,然后制作 entityManager.persist() 或 entityManager.merge()。我可以这样做,否则我的项目实例将在命名查询后不受管理并且持久/合并将失败?
这是我的代码,其中 em.persist() 实际上不起作用:
public String getSMSText(String sourceUrl) {
Rss rss;
List urls = em.createNamedQuery("Rss.getFeedByUrl").setParameter("url", sourceUrl).getResultList();
if (urls.size() != 0) {
rss = (Rss) urls.get(urls.size() - 1);
for (Rss.Item item : rss.getChannel().getItems()) {
try {
if (Utils.isToday(item.getPubDateAsDate()) && !item.isPushed()) {
item.setPushed(true);
em.refresh(item);
em.persist(item);
return item.getTitle() + "." + item.getSummary();
}
} catch (ParseException e) {
logger.info("Cannot parse pub date", e);
}
}
logger.info(sourceUrl + " No news for today!");
return null;
}
return null;
}
【问题讨论】:
-
为什么要对 entityManager 进行持久化?只需使用 Spring data jpa 取回您的数据并保存它,它将为您处理所有底层实体管理器调用。
-
整个应用程序都是这样制作的,我只是想修复一个错误。这就是为什么。
标签: spring hibernate named-query