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
Java JPA OneToMany列表始终为空_Java_Hibernate_Inheritance_Jpa_One To Many - Fatal编程技术网

Java JPA OneToMany列表始终为空

Java JPA OneToMany列表始终为空,java,hibernate,inheritance,jpa,one-to-many,Java,Hibernate,Inheritance,Jpa,One To Many,我在做一个JPA项目,我和一个女人的关系有点问题。 我有一个扩展Person类的成员类(@heritance(strategy=InheritanceType.JOINED),还有一个扩展Person的Baby类 @Entity @Inheritance(strategy = InheritanceType.JOINED) public class Person{ @Id @GeneratedValue(strategy = GenerationType.AUTO) pr

我在做一个JPA项目,我和一个女人的关系有点问题。 我有一个扩展Person类的成员类(@heritance(strategy=InheritanceType.JOINED),还有一个扩展Person的Baby类

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Person{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected int id;
    @Column(name = "last_name")
    private String name;
    @Column(name = "first_name")
    private String firstName;
    ...

@Entity   
public class Member extends Person{
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "parent", targetEntity =       Baby.class)
    private Set<Baby> babies;
    ....

 @Entity
 public class Baby extends Person{
    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "parent_id")
    private Member parent;
    ....
@实体
@继承(策略=InheritanceType.JOINED)
公共阶层人士{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
受保护的int-id;
@列(name=“last_name”)
私有字符串名称;
@列(name=“first_name”)
私有字符串名;
...
@实体
公共类成员扩展个人{
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy=“parent”,targetEntity=Baby.class)
私生婴儿;
....
@实体
公共类婴儿扩展人{
@manytone(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name=“parent\u id”)
私人会员家长;
....
在婴儿方面没有问题,但在成员类中设置的婴儿总是空的

这是对一些评论的重播:


是的Mateus Viccari我查过了父母的身份证是正确的 这是我的完整代码:

@Entity
public class Member extends Person implements Serializable{
    private static final long serialVersionUID =      -2683015788944585661L;
    @OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.EAGER, mappedBy = "parent")
    private Set<Baby> babies;   

public Member(String name, String firstName, String address, String numTel, String email, Date birthDay){
        super(name, firstName, address, numTel, email, birthDay);
}

Member(){
    super(null, null, null, null, null, null);
}


public Set<Baby> getBabies(){
    return babies;
}
public void setBabies(Set<Baby> babies){
    this.babies = babies;
}

}

@Entity
public class Baby extends Person implements Serializable{
    private static final long serialVersionUID = 7044695859030235095L;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "parent_id")
    private Member parent;

    public Baby(String name, String firstName, String address, String numTel,
        String email, Date birthDay, Member parent){
    super(name, firstName, address, numTel, email, birthDay);
    this.parent = parent;
}

Baby(){
    super(null, null, null, null, null, null);
}

public Member getParent(){
    return parent;
}

@Override
public String toString(){
    return "Baby [parent=" + parent + ", toString()=" + super.toString()
            + "]";
}

}
@实体
公共类成员扩展Person实现可序列化{
私有静态最终长serialVersionUID=-26830157889494585661L;
@OneToMany(cascade=CascadeType.REMOVE,fetch=FetchType.EAGER,mappedBy=“parent”)
私生婴儿;
公共成员(字符串名、字符串名、字符串地址、字符串编号、字符串电子邮件、生日日期){
超级(姓名、名、地址、数字、电子邮件、生日);
}
成员(){
super(null,null,null,null,null,null,null);
}
公共集getBabies(){
返回婴儿;
}
公共空间障碍(设置婴儿){
这个。婴儿=婴儿;
}
}
@实体
公共类Baby扩展Person实现可序列化{
私有静态最终长serialVersionUID=704469585903035095L;
@manytone(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name=“parent\u id”)
私人会员家长;
public Baby(字符串名、字符串名、字符串地址、字符串numTel、,
字符串电子邮件、日期生日、成员家长){
超级(姓名、名、地址、数字、电子邮件、生日);
this.parent=parent;
}
婴儿(){
super(null,null,null,null,null,null,null);
}
公共成员getParent(){
返回父母;
}
@凌驾
公共字符串toString(){
返回“Baby[parent=“+parent+”,toString()=”+super.toString()
+ "]";
}
}
以下是检索成员列表的方法:

Member parent = new Member("Aslami", "Khalid", "test", null, null, Date.valueOf("1974-04-15"));
Baby b = new Baby("Aslami", "Rayan", "test", null, null, Date.valueOf("2012-12-24"), parent);
em.getTransaction().begin();
em.createNativeQuery("DELETE FROM Baby b").executeUpdate();
em.createNativeQuery("DELETE FROM Member m").executeUpdate();
em.merge(b);
em.getTransaction().commit();
List<Baby> babies = em.createNativeQuery("SELECT b FROM Baby b").getResultList();
List<Member> members = em.createNativeQuery("SELECT m FROM Member m").getResultList();
assertEquals(1, babies.size());
assertEquals("Aslami", babies.get(0).getName());
assertEquals(1, members.get(0).getBabies().size());
Member parent=新成员(“Aslami”、“Khalid”、“test”、null、null、Date.valueOf(“1974-04-15”);
婴儿b=新生婴儿(“Aslami”、“Rayan”、“test”、null、null、Date.valueOf(“2012-12-24”)、父母;
em.getTransaction().begin();
em.createNativeQuery(“从婴儿b中删除”).executeUpdate();
em.createNativeQuery(“从成员m中删除”).executeUpdate();
em.merge(b);
em.getTransaction().commit();
List babies=em.createNativeQuery(“从婴儿b中选择b”).getResultList();
List members=em.createNativeQuery(“从成员m中选择m”).getResultList();
assertEquals(1,baby.size());
assertEquals(“Aslami”,babys.get(0.getName());
assertEquals(1,members.get(0.getBabies().size());

如果“婴儿”有正确的父id吗?

做什么时它是空的?在JPA中选择数据库中有子项的成员时,程序员有责任处理实体之间的运行时关系。因此,如果无法检索引用项,则此注释有何用处?!您必须向我们展示更多的代码,而不是只是字段,毕竟我们不是魔术师。这可能会有帮助。是的,Mateus Viccari,我检查过,父id是好的。我在问题中添加了补充代码