鸟类喜欢持续存在,但有一个关键的细节。调用merge时,参数保持为分离实体,返回值为托管实体(这是因为持久性上下文中的每个实体可能只由一个java对象表示,如果已在上下文中加载分离的实体,则它已经是一个托管实体,因此返回,并且将是与合并参数不同的实例)谢谢
鸟类喜欢持续存在,但有一个关键的细节。调用merge时,参数保持为分离实体,返回值为托管实体(这是因为持久性上下文中的每个实体可能只由一个java对象表示,如果已在上下文中加载分离的实体,则它已经是一个托管实体,因此返回,并且将是与合并参数不同的实例)谢谢,java,entity-framework,hibernate,jpa,Java,Entity Framework,Hibernate,Jpa,鸟类喜欢持续存在,但有一个关键的细节。调用merge时,参数保持为分离实体,返回值为托管实体(这是因为持久性上下文中的每个实体可能只由一个java对象表示,如果已在上下文中加载分离的实体,则它已经是一个托管实体,因此返回,并且将是与合并参数不同的实例)谢谢,是的,正如您所发现的,我对JPA不是100%熟悉:)你的回答很好地解释了。至于为什么它最初是用createQuery等编写的,我现在已经和最初的开发人员谈过了,这与一些监控工具有关,这些工具不能正确地使用find或Criteria来提取查询,
鸟类喜欢持续存在,但有一个关键的细节。调用merge时,参数保持为分离实体,返回值为托管实体(这是因为持久性上下文中的每个实体可能只由一个java对象表示,如果已在上下文中加载分离的实体,则它已经是一个托管实体,因此返回,并且将是与合并参数不同的实例)谢谢,是的,正如您所发现的,我对JPA不是100%熟悉:)你的回答很好地解释了。至于为什么它最初是用createQuery等编写的,我现在已经和最初的开发人员谈过了,这与一些监控工具有关,这些工具不能正确地使用find或Criteria来提取查询,所以他告诉我用createQuery和GetResultListThank来完成这些工作。谢谢,是的,正如您所发现的,我对JPA不是100%熟悉:)你的答案解释得很好。至于为什么它最初是用createQuery等编写的,我现在已经和最初的开发人员谈过了,这与一些监视工具有关,这些工具不能正确地使用find或Criteria来拾取查询,所以他告诉我使用createQuery和getResultList来完成这些操作
public EmailTemplate findEmailTemplateById(long id) {
LOG.debug("Entering findEmailTemplateById(id='" + id + "')");
// Construct JPQL query
String queryString = "SELECT a FROM EmailTemplate a " +
"WHERE templateId = :templateId";
Query query = entityManager.createQuery(queryString);
query.setParameter("templateId", id);
LOG.debug("Using query " + queryString);
List<EmailTemplate> resultList = query.getResultList();
LOG.debug("Exiting findEmailTemplateByName(id='" + id + "') results size " + resultList.size() + " ( returns null if 0 )");
if (resultList.isEmpty() || resultList.size() == 0) {
return null;
} else {
return resultList.get(0);
}
}
@Override
public EmailTemplateEdit findEmailTemplateEditById(long id) {
LOG.debug("Entering findEmailTemplateEditById(id={})", id);
return entityManager.find(EmailTemplateEdit.class, id);
}