我想知道这些方法之间的区别。
什么时候使用EntityManager的createQuery()
and方法?find()
他们每个人的优点是什么?
谢谢你回答我。
我想知道这些方法之间的区别。
什么时候使用EntityManager的createQuery()
and方法?find()
他们每个人的优点是什么?
谢谢你回答我。
find
当您想通过主键查找实体时使用。这意味着你确切地知道你在寻找什么,你只是想把它从数据库中提取出来。
当您想使用createQuery
标准查找实体或者如果您想使用 JPQL 语句来定义您返回的内容时,您可以使用它。因此,当您想要获取与某些条件匹配的实体或实体集合时,您将使用查询。
该createQuery
方法允许您创建将要执行的 JPQL 语句。允许的 JPQL 语句比find
. 例如给出下表:
create table CAT(
cat_id integer,
cat_name varchar(40)
)
您可以执行查询以按名称查找猫。
entityManager.createQuery("select c from Cat c where c.name = :name");
该find
方法仅允许您使用其主键检索对象。所以要使用find
上表的方法:
entityManager.find(Cat.class, new Integer(1));
简而言之,createQuery
允许您以更动态的方式检索实体,同时find
限制您搜索具有已知 ID 的实体。