首页 > 解决方案 > 休眠中的 OneToMany 映射。值即将为空

问题描述

我有一个学生班,我有一个具有@OneToMany 关系的Account 班。一个学生到多个帐户。我的两个表都已创建。我的帐户表中有一个字段 Student_id,但值为 null。你能帮我在哪里做错吗。

    import java.util.Collection;
    import java.util.Set;

    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.OneToMany;
    import javax.persistence.OneToOne;
    import javax.persistence.Table;

    @Entity
    @Table(name = "Student_Information")
    public class Student {

        @Id
        private int id;

        @Column
        private String name;


        @OneToOne(targetEntity=Address.class , cascade = CascadeType.ALL)
        @JoinColumn(name="addressId" , referencedColumnName = "addressId")
        private Address adId;

        @OneToMany(mappedBy="student",cascade= CascadeType.ALL)
        private Collection<Account> account;


        @ManyToMany(cascade = CascadeType.ALL)
        @JoinTable(name = "STUDENT_CERTIFICATION", joinColumns = { @JoinColumn(name = "id") }, inverseJoinColumns = { @JoinColumn(name = "certId") })
        private Collection<Certification> certId;


        public Collection<Account> getAccount() {
            return account;
        }

        public void setAccount(Collection<Account> account) {
            this.account = account;
        }

        public Collection<Certification> getCertId() {
            return certId;
        }

        public void setCertId(Collection<Certification> certId) {
            this.certId = certId;
        }


        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Address getAdId() {
            return adId;
        }

        public void setAdId(Address adId) {
            this.adId = adId;
        }

    }

Account Class




import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "Account")
public class Account {

    @Id
    private int accountId;


    @Column
    private String accountNumber;

    @ManyToOne
    @JoinColumn(name="id")
    private Student id;

    public Student getId() {
        return id;
    }

    public void setId(Student id) {
        this.id = id;
    }

    public int getAccountId() {
        return accountId;
    }

    public void setAccountId(int accountId) {
        this.accountId = accountId;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }


}

我有一个学生班,我有一个具有@OneToMany 关系的Account 班。一个学生到多个帐户。我的两个表都已创建。我的帐户表中有一个字段 Student_id,但值为 null。你能帮我在哪里做错吗。

标签: javahibernate-mapping

解决方案


我认为问题在于连接列注释中的名称,该名称应与表中列的实际名称匹配,在这种情况下,正如您所说的 student_id

@ManyToOne
@JoinColumn(name="student_id")
private Student id;

推荐阅读