我为实体实现了一对多的关系。所以这些与另一个实体映射以传递值。
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="part_id")
public Part getPart() {
return part;
part_id doesn't create getters and setters with @column
。它只与关系建立起来。
但在其他情况下,我在查询中检查这些字段。我正在尝试使用Criteria来查找值
它给了我例外org.hibernate.QueryException: could not resolve property: part_id
因为没有使用@Column属性生成getter。请问您如何在查询中使用这些字段?
如果添加getter和setter,则会提供org.hibernate.MappingException: Repeated column in mapping for entity:
。
谢谢,
答案 0 :(得分:0)
双向协会(link)应如下所示。
@Entity
public class Troop {
@OneToMany(mappedBy="troop")
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk")
public Troop getTroop() {
...
}
请检查配置。如果可能,使用hibernate工具生成实体。
答案 1 :(得分:0)
不应使用数据库列的名称,而应使用持久属性的名称。在这种情况下,持久属性的名称是部分。如果目标是获取与具有给定id的部分相关的所有此类实体,则以下是要去的方式(id
中的Part
属性的名称假定为id
):
crit.add(Restrictions.eq("part.id", partId));