我正在使用弹簧启动和休眠。我有一个命名查询,我在其中选择一个项目。然后我想设置一些属性,然后制作 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;
}