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类的一个属性,它是User entity类的一个子类。 但是,当我尝试整个查询时,我得到: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类的一个属性,
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;