Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何从@OneToMany注释字段中获取两列_Spring_Hibernate_Jpa_One To Many - Fatal编程技术网

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(){
}
…能手和二传手