Java EnityManager查询返回一个奇怪的不可访问对象
我有两个实体通过连接注释连接起来,除了奇怪的查询结果外,其他一切都正常 所以我让这个班说猫,另一个班说家。因此,如果我执行类Cat的命名查询,我希望它的属性Cat.home将由表home中的查询结果填充 我以这种方式执行查询:Java EnityManager查询返回一个奇怪的不可访问对象,java,hibernate,entity,entitymanager,hibernate-entitymanager,Java,Hibernate,Entity,Entitymanager,Hibernate Entitymanager,我有两个实体通过连接注释连接起来,除了奇怪的查询结果外,其他一切都正常 所以我让这个班说猫,另一个班说家。因此,如果我执行类Cat的命名查询,我希望它的属性Cat.home将由表home中的查询结果填充 我以这种方式执行查询: List<Cat> a = (List<Cat>) em.createNamedQuery("Cat.findHome") .setParameter("catName", catName) .set
List<Cat> a = (List<Cat>) em.createNamedQuery("Cat.findHome")
.setParameter("catName", catName)
.setParameter("houseKey", houseKey).getResultList();
提前谢谢 将
选择零件添加到命名查询
query="select a from Cat a where a.name = :catName and a.home.houseKey like :houseKey")
将选择零件添加到命名查询
query="select a from Cat a where a.name = :catName and a.home.houseKey like :houseKey")
很明显,你会期待一个猫的列表。命名查询的外观如何?请用它+实体对象更新您的问题。用实体和类CatWell中的命名查询更新后,您可能会看到一个Cat
s列表。命名查询的外观如何?请用它+实体对象更新您的问题。用实体和类中的命名查询更新。很抱歉,我以前删除的问题。这似乎确实是正确的答案。@MagnusTengdahl我更新了查询。现在没有join
infrom
几乎可以工作。这意味着它正确返回对象列表,但Cat.house属性似乎不包含它应该包含的内容。我正在调试这个,然后我会回复更多信息。就是这样。我真不敢相信我花了大约3个小时试图弄明白这一点,这是一件如此简单的事情。很抱歉我以前删除的问题。这似乎确实是正确的答案。@MagnusTengdahl我更新了查询。现在没有join
infrom
几乎可以工作。这意味着它正确返回对象列表,但Cat.house属性似乎不包含它应该包含的内容。我正在调试这个,然后我会回复更多信息。就是这样。我不敢相信我花了大约3个小时试图弄明白这一点,这是一件如此简单的事情。
@Entity
@Table(name="HOME")
public class Home implements Serializable{
private static final long serialVersionUID = 1L;
private Sting housekey;
private Cat cat;
/**
* @param housekey the housekey to set
*/
public void setHousekey(String housekey) {
this.housekey = housekey;
}
/**
* @return the housekey
*/
@Id
@Column(name="K_HOME")
public String getHousekey(){
return housekey;
}
/**
* @param cat the cat to set
*/
public void setCat(Cat cat) {
this.cat = cat;
}
/**
* @return the cat
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "K_CAT_HOME", updatable=false, insertable=false)
public Cat getCat() {
return cat;
}
}
query="select a from Cat a where a.name = :catName and a.home.houseKey like :houseKey")