假设有两个实体 - 业主Hibernate HQL“加入的路径!” @ManyToOne关系
@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...
}
,其中一个业主可以有多个宠物(原班分别更名),但是一个宠物只能属于一个所有者。我想要做的是找到所有者拥有一个有一些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
。
我错过了什么提示?
“预期路径”意味着“所有者”无法访问宠物,除非它将它们存储在集合中。我相信你必须让'所有者'保持宠物的集合。 –