9

我想知道这些方法之间的区别。

什么时候使用EntityManager的createQuery()and方法?find()

他们每个人的优点是什么?

谢谢你回答我。

4

2 回答 2

14

find当您想通过主键查找实体时使用。这意味着你确切地知道你在寻找什么,你只是想把它从数据库中提取出来。

当您想使用createQuery标准查找实体或者如果您想使用 JPQL 语句来定义您返回的内容时,您可以使用它。因此,当您想要获取与某些条件匹配的实体或实体集合时,您将使用查询。

于 2013-03-29T14:14:04.590 回答
10

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 的实体。

于 2013-03-29T14:17:24.363 回答