Java JPA如何识别名称相同但包不同的两个类?
我在项目中使用JPA和Hibernate。我有两个类的名称相同,但包不同。它们是:Java JPA如何识别名称相同但包不同的两个类?,java,hibernate,jpa,entitymanager,Java,Hibernate,Jpa,Entitymanager,我在项目中使用JPA和Hibernate。我有两个类的名称相同,但包不同。它们是: @Entity(name = "X_USER") @Table(name = "X_USER") public class User { 以及: 我使用:.getSimpleName()创建了一个搜索查询,但由于它们的简单名称相同,因此该查询不起作用。我将其更改为.getName() 但是,它仍然会混淆要返回到哪个用户 编辑: 我有: SELECT_BY_PROPERTY_QUERY = "SELECT p F
@Entity(name = "X_USER")
@Table(name = "X_USER")
public class User {
以及:
我使用:.getSimpleName()
创建了一个搜索查询,但由于它们的简单名称相同,因此该查询不起作用。我将其更改为.getName()
但是,它仍然会混淆要返回到哪个用户
编辑:
我有:
SELECT_BY_PROPERTY_QUERY = "SELECT p FROM :CLASS: p WHERE p.:PROPNAME:=?";
我希望:
SELECT_BY_PROPERTY_QUERY.replaceFirst(":CLASS:", clazz.getName()).replaceFirst(":PROPNAME:", propertyName);
当我调试它时,它会产生如下结果:
Select p from User p Where p.name=?
它仍然是
User
,不包含包信息,并且返回错误的User
类。如果要创建JPQL查询,需要将实体名称传递给它。正如您所发布的,您有两个实体,它们由相同的Java类表示,但不同的实体名称(X_USER
由您显式设置,而USER
隐式设置)
如果您希望动态获取实体的名称,则应该使用,这样做(不选中):
HTH.
getName()
应返回FQN。你犯了什么错误?@XaviLópez我已经编辑了我的问题。
Select p from User p Where p.name=?
EntityManager em = ...
Metamodel model = em.getEntityManagerFactory().getMetamodel();
String entityName = model.entity(com.your.pckg.User.class).getName();