Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA如何识别名称相同但包不同的两个类?_Java_Hibernate_Jpa_Entitymanager - Fatal编程技术网

Java JPA如何识别名称相同但包不同的两个类?

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

我在项目中使用JPA和Hibernate。我有两个类的名称相同,但包不同。它们是:

@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();