Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 Hibernate/JPA查询联接子类的可嵌入属性_Java_Hibernate_Jpa - Fatal编程技术网

Java Hibernate/JPA查询联接子类的可嵌入属性

Java Hibernate/JPA查询联接子类的可嵌入属性,java,hibernate,jpa,Java,Hibernate,Jpa,我有以下实体:ShoppingCart、抽象类用户和扩展用户的最终用户。AddressDetails是嵌入到最终用户实体中的可嵌入文件 我的查询如下所示:从ShoppingCart中选择sc sc JOIN sc.endUser作为最终用户,其中endUser.name EQ someName和endUser.addressDetails.zip EQ 1234 当我删除WHERE子句的第二部分,只保留endUser.name部分时,一切正常。name是endUser entity类的一个属性,

我有以下实体:ShoppingCart、抽象类用户和扩展用户的最终用户。AddressDetails是嵌入到最终用户实体中的可嵌入文件

我的查询如下所示:从ShoppingCart中选择sc sc JOIN sc.endUser作为最终用户,其中endUser.name EQ someName和endUser.addressDetails.zip EQ 1234

当我删除WHERE子句的第二部分,只保留endUser.name部分时,一切正常。name是endUser entity类的一个属性,它是User entity类的一个子类。 但是,当我尝试整个查询时,我得到:

 org.hibernate.QueryException: could not resolve property: zip of:
购物车:

@Entity
public class ShoppingCart {

   ...

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinTable
   private EndUser endUser;
}
用户:

最终用户:

@Entity
public class EndUser extends User {
   ...
   @Column
   private String name;

   @Embeded
   private AddressDetails addressDetails;
   ...
}
地址详情:

@Embeddable
public class AddressDetails {
   ...
   private int zip;
   ...
}

我发现了问题所在

当我在ShoppingCart和最终用户之间的@ManyToOne关系中将FetchType更改为EAGER时,查询工作正常

因此,它应该是:

   @ManyToOne(fetch = FetchType.EAGER)
   @JoinTable
   private EndUser endUser;

getter/setter/query中没有输入错误?我检查了一下,没有任何输入错误。我真的找到了解决办法。检查我的Answer@Embeded是一个打字错误是的,但我已经在文章中手动编写了这段代码。我的实际代码中没有输入错误。谢谢你指出这一点
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinTable
   private EndUser endUser;