Hibernate select*其中id=:id和entity manager find()之间的差异
我都知道Hibernate select*其中id=:id和entity manager find()之间的差异,hibernate,jpa,eclipselink,hql,jpql,Hibernate,Jpa,Eclipselink,Hql,Jpql,我都知道 EntityManager.createQuery("select e from Entity e where e.id = :id") 以及: 返回相同的结果,但我真的想知道它们之间的区别。它们也生成相同的SQL 在某些情况下,可能会生成不同的SQL,但没有发现任何不同 区别在于它们在不同情况下如何帮助您,但仅限于代码级别: createQuery需要一个JPQL/HQL才能工作。id列名或实体名的任何更改都将影响查询字符串。find方法不会遇到相同的问题 您需要更多的样板代码来
EntityManager.createQuery("select e from Entity e where e.id = :id")
以及:
返回相同的结果,但我真的想知道它们之间的区别。它们也生成相同的SQL 在某些情况下,可能会生成不同的SQL,但没有发现任何不同 区别在于它们在不同情况下如何帮助您,但仅限于代码级别:
需要一个JPQL/HQL才能工作。createQuery
列名或实体名的任何更改都将影响查询字符串。id
方法不会遇到相同的问题find
- 您需要更多的样板代码来处理
(createQuery
类、调用Query
方法、查询字符串等)setParameter
EntityManager.find(Entity.class,id)