假设有两个实体 - 所有者
@Entity
@NamedQueries({
@NamedQuery(name = "Owner.findOwnerForPetId", query = "select o from Owner o inner join Pet p on o.ownerId=p.owner.ownerId where p.petId= :petId")
})
public class Owner {
@Id
@Column(name = "ownerId")
private Long ownerId;
@Column
private String name;
// scaffolding code...
}
和宠物
@Entity
public class Pet {
@Id
@Column(name = "petId")
private Long petId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ownerId")
private Owner owner;
@Column
private String name;
// scaffolding code...
}
其中一位Owner可以拥有多只宠物(原来的类已重命名),但一只Pet只能属于一位Owner。我想做的是找到拥有某个 ID 的宠物的主人,例如:
select Owner.ownerId, Owner.name from Owner inner join Pet on Owner.ownerId=Pet.ownerId where Pet.petId=3;
在纯 SQL 中执行时效果很好。但是,我在 HQL 中尝试了这两个查询,它们都给出了错误 Path expected for join!
select o from Owner o inner join Pet p on o.ownerId=p.owner.ownerId where p.petId= :petId
和
from Owner o join Pet p where p.petId= :petId
请注意,没有 @OneToMany
或Collection<Pet> pets
在业主.我只想用@ManyToOne
来做到这一点在宠物方面。
关于我错过了什么的任何提示吗?
最佳答案
试试这个
select o from Pet p inner join p.owner o where p.petId= :petId
关于java - Hibernate HQL "Path expected for join!"@ManyToOne 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42554440/