【发布时间】:2013-03-20 06:06:32
【问题描述】:
我想知道这些方法之间的区别。
什么时候使用EntityManager的createQuery()和find()方法?
它们各自的优点是什么?
谢谢你回答我。
【问题讨论】:
-
你读过Javadoc吗?
-
@Zutty 是的,我有,但我不太了解。
标签: java jpa entitymanager
我想知道这些方法之间的区别。
什么时候使用EntityManager的createQuery()和find()方法?
它们各自的优点是什么?
谢谢你回答我。
【问题讨论】:
标签: java jpa entitymanager
当您想通过主键查找实体时,您使用find。这意味着您确切地知道您在寻找什么,您只想将其从数据库中提取出来。
当您想要使用条件查找实体或者想要使用 JPQL 语句来定义您返回的内容时,您可以使用 createQuery。因此,当您想要获取匹配某些条件的实体或实体集合时,您将使用查询。
【讨论】:
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 的实体。
【讨论】: