Spring 如何从@OneToMany注释字段中获取两列
我有一个具有树结构的类:Spring 如何从@OneToMany注释字段中获取两列,spring,hibernate,jpa,one-to-many,Spring,Hibernate,Jpa,One To Many,我有一个具有树结构的类: @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 positio
@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
@实体
@表(name=“ttp”)
公共类Ttp{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@列(unique=true,nullable=false)
私有字符串名称;
私人职位;
@JoinColumnOrFormula(column=@JoinColumn(name=“parent”,referencedColumnName=“id”))
私人长父ID;
//私人地图儿童地图;
@manytone(fetch=FetchType.LAZY)
@JoinTable(name=“parent\u ttp”,joinColumns=@JoinColumn(name=“child\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“parent\u id”,referencedColumnName=“id”))
私人Ttp父母;
@OneToMany(fetch=FetchType.LAZY)
@JoinTable(name=“parent\u ttp”,joinColumns=@JoinColumn(name=“parent\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“child\u id”,referencedColumnName=“id”))
private List childs=new ArrayList();
公共Ttp(字符串名称,Ttp父级){
this.name=名称;
this.parent=parent;
}
公共Ttp(){
}
…能手和二传手
当我得到父母Id时,效果很好,因为我只得到了父母Id,没有课。
在不完全加载对象的情况下,如何在List或HashMap中获取ID值和childs的位置属性
p、 很抱歉我的英语不好你的映射是错误的。在建模
@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
@实体
@表(name=“ttp”)
公共类Ttp{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@列(unique=true,nullable=false)
私有字符串名称;
私人职位;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“parent\u ttp”)
私人Ttp父母;
@OneToMany(fetch=FetchType.LAZY,mappedBy=“parent”)
private List children=new ArrayList();
公共Ttp(字符串名称,Ttp父级){
this.name=名称;
this.parent=parent;
}
公共Ttp(){
}
…能手和二传手