我有一个具有树结构的类:
@Entity
@Table(name="ttp")
public class Ttp {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Column(unique=true, nullable=false)
private String name;
private int position;
@JoinColumnOrFormula(column = @JoinColumn(name="parent", referencedColumnName="id"))
private Long parentId;
//private Map<Long,Integer> childsMap;
@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name="parent_ttp",joinColumns=@JoinColumn(name="child_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="parent_id", referencedColumnName="id"))
private Ttp parent;
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name="parent_ttp",joinColumns=@JoinColumn(name="parent_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="child_id", referencedColumnName="id"))
private List<Ttp> childs= new ArrayList<Ttp>();
public Ttp(String name, Ttp parent) {
this.name = name;
this.parent = parent;
}
public Ttp() {
}
...getters and setters
当我获得 parentId 时,它工作正常,因为我只得到没有上课的Id父母。 如何在List或HashMap中获取 childs 的ID和位置属性值,而不完全加载对象?
P.S。抱歉我的英文不好
答案 0 :(得分:0)
您的映射是错误的。建模@OneToMany
关系时不需要连接表。尝试这样的事情,这是最简单的方法,如果你需要更复杂的东西,可以在此基础上进行构建
@Entity
@Table(name = "ttp")
public class Ttp {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(unique = true, nullable = false)
private String name;
private int position;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_ttp")
private Ttp parent;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
private List<Ttp> children = new ArrayList<Ttp>();
public Ttp(String name, Ttp parent) {
this.name = name;
this.parent = parent;
}
public Ttp() {
}
...getters and setters