我知道两者
EntityManager.createQuery("select e from Entity e where e.id = :id")
和
EntityManager.find(Entity.class,id)
返回相同的结果,但我真的想知道它们之间的区别。
答案 0 :(得分:3)
他们也生成相同的SQL。
在某些情况下,有discussion关于生成不同SQL的可能性,但没有发现任何不同。
在不同的情况下,差异在于它们如何帮助您,但仅限于代码级别:
createQuery
需要JPQL / HQL才能运行。 id
列名称或实体名称的任何更改都将影响查询字符串。 find
方法不会遇到同样的问题。createQuery
(Query
类,调用setParameter
方法,查询字符串等)。