Java 未在子表中插入外键

Java 未在子表中插入外键,java,hibernate,Java,Hibernate,我试图插入组织及其人员详细信息(一对多双向关系) 但是,这里数据被插入到组织及其人员详细信息中,但是外键(orgid)没有被插入到orgperson表中 Organization.java package com.techvision.model; import java.io.Serializable; import javax.persistence.*; import java.util.Set; @Entity @Table(name="organization") @NamedQu

我试图插入组织及其人员详细信息(一对多双向关系)

但是,这里数据被插入到组织及其人员详细信息中,但是外键(
orgid
)没有被插入到
orgperson
表中

Organization.java

package com.techvision.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Set;

@Entity
@Table(name="organization")
@NamedQuery(name="Organization.findAll", query="SELECT o FROM Organization o")
public class Organization implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private int orgid;

@Column(length=45)
private String orgname;

//bi-directional many-to-one association to Orgperson
@OneToMany(mappedBy="organization",cascade=CascadeType.ALL)
private Set<Orgperson> orgpersons;

public Organization() {
}

public int getOrgid() {
    return this.orgid;
}

public void setOrgid(int orgid) {
    this.orgid = orgid;
}

public String getOrgname() {
    return this.orgname;
}

public void setOrgname(String orgname) {
    this.orgname = orgname;
}

public Set<Orgperson> getOrgpersons() {
    return this.orgpersons;
}

public void setOrgpersons(Set<Orgperson> orgpersons) {
    this.orgpersons = orgpersons;
}

public Orgperson addOrgperson(Orgperson orgperson) {

    System.out.println(orgperson.getPersonname());
    getOrgpersons().add(orgperson);
    orgperson.setOrganization(this);

    return orgperson;
}

public Orgperson removeOrgperson(Orgperson orgperson) {
    getOrgpersons().remove(orgperson);
    orgperson.setOrganization(null);

    return orgperson;
}

}
package com.techvision.model;
import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name="orgperson")
@NamedQuery(name="Orgperson.findAll", query="SELECT o FROM Orgperson o")
public class Orgperson implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private int orgpersonid;

@Column(length=45)
private String personname;

//bi-directional many-to-one association to Organization
@ManyToOne
@JoinColumn(name="orgid")
private Organization organization;

public Orgperson() {
}

public int getOrgpersonid() {
    return this.orgpersonid;
}

public void setOrgpersonid(int orgpersonid) {
    this.orgpersonid = orgpersonid;
}

public String getPersonname() {
    return this.personname;
}

public void setPersonname(String personname) {
    this.personname = personname;
}

public Organization getOrganization() {
    return this.organization;
}

public void setOrganization(Organization organization) {
    this.organization = organization;
}

}
package com.techvision.MainApp;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.techvision.Util.HibernateUtil;
import com.techvision.model.Organization;
import com.techvision.model.Orgperson;
public class MyApp {
public static void main (String args[])
{
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
session.beginTransaction();

Organization org=new Organization();
org.setOrgname("AZZ");
Set<Orgperson> orgset=new HashSet<Orgperson>();

Orgperson orgperson1=new Orgperson();
Orgperson orgperson2=new Orgperson();

orgperson1.setPersonname("ravi");
orgperson2.setPersonname("rams");
orgset.add(orgperson1);
orgset.add(orgperson2);
org.setOrgpersons(orgset);
session.save(org);
session.getTransaction().commit();
session.close();
}
}
MainApp.java

package com.techvision.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Set;

@Entity
@Table(name="organization")
@NamedQuery(name="Organization.findAll", query="SELECT o FROM Organization o")
public class Organization implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private int orgid;

@Column(length=45)
private String orgname;

//bi-directional many-to-one association to Orgperson
@OneToMany(mappedBy="organization",cascade=CascadeType.ALL)
private Set<Orgperson> orgpersons;

public Organization() {
}

public int getOrgid() {
    return this.orgid;
}

public void setOrgid(int orgid) {
    this.orgid = orgid;
}

public String getOrgname() {
    return this.orgname;
}

public void setOrgname(String orgname) {
    this.orgname = orgname;
}

public Set<Orgperson> getOrgpersons() {
    return this.orgpersons;
}

public void setOrgpersons(Set<Orgperson> orgpersons) {
    this.orgpersons = orgpersons;
}

public Orgperson addOrgperson(Orgperson orgperson) {

    System.out.println(orgperson.getPersonname());
    getOrgpersons().add(orgperson);
    orgperson.setOrganization(this);

    return orgperson;
}

public Orgperson removeOrgperson(Orgperson orgperson) {
    getOrgpersons().remove(orgperson);
    orgperson.setOrganization(null);

    return orgperson;
}

}
package com.techvision.model;
import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name="orgperson")
@NamedQuery(name="Orgperson.findAll", query="SELECT o FROM Orgperson o")
public class Orgperson implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private int orgpersonid;

@Column(length=45)
private String personname;

//bi-directional many-to-one association to Organization
@ManyToOne
@JoinColumn(name="orgid")
private Organization organization;

public Orgperson() {
}

public int getOrgpersonid() {
    return this.orgpersonid;
}

public void setOrgpersonid(int orgpersonid) {
    this.orgpersonid = orgpersonid;
}

public String getPersonname() {
    return this.personname;
}

public void setPersonname(String personname) {
    this.personname = personname;
}

public Organization getOrganization() {
    return this.organization;
}

public void setOrganization(Organization organization) {
    this.organization = organization;
}

}
package com.techvision.MainApp;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.techvision.Util.HibernateUtil;
import com.techvision.model.Organization;
import com.techvision.model.Orgperson;
public class MyApp {
public static void main (String args[])
{
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
session.beginTransaction();

Organization org=new Organization();
org.setOrgname("AZZ");
Set<Orgperson> orgset=new HashSet<Orgperson>();

Orgperson orgperson1=new Orgperson();
Orgperson orgperson2=new Orgperson();

orgperson1.setPersonname("ravi");
orgperson2.setPersonname("rams");
orgset.add(orgperson1);
orgset.add(orgperson2);
org.setOrgpersons(orgset);
session.save(org);
session.getTransaction().commit();
session.close();
}
}

请尝试下面的代码,您没有将组织设置为orgperson实体

    package com.techvision.MainApp;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import com.techvision.Util.HibernateUtil;
    import com.techvision.model.Organization;
    import com.techvision.model.Orgperson;
    public class MyApp {
    public static void main (String args[])
    {
    SessionFactory sf = HibernateUtil.getSessionFactory();
    Session session = sf.openSession();
    session.beginTransaction();

    Organization org=new Organization();
    org.setOrgname("AZZ");
    Set<Orgperson> orgset=new HashSet<Orgperson>();

    Orgperson orgperson1=new Orgperson();
    Orgperson orgperson2=new Orgperson();

    orgperson1.setPersonname("ravi");
    orgperson2.setPersonname("rams");
    orgperson1.setOrganization(org);
    orgperson2.setOrganization(org);
    orgset.add(orgperson1);
    orgset.add(orgperson2);
    org.setOrgpersons(orgset);
    session.save(org);
    session.getTransaction().commit();
    session.close();
    }
    }
package com.techvision.MainApp;
导入java.util.HashSet;
导入java.util.Iterator;
导入java.util.Set;
导入org.hibernate.Session;
导入org.hibernate.SessionFactory;
导入com.techvision.Util.HibernateUtil;
导入com.techvision.model.Organization;
导入com.techvision.model.Orgperson;
公共类MyApp{
公共静态void main(字符串参数[])
{
SessionFactory sf=HibernateUtil.getSessionFactory();
Session Session=sf.openSession();
session.beginTransaction();
组织机构=新组织机构();
org.setOrgname(“AZZ”);
Set orgset=newhashset();
Orgperson orgperson1=新的Orgperson();
Orgperson orgperson2=新的Orgperson();
orgperson1.setPersonname(“ravi”);
orgperson2.setPersonname(“rams”);
orgperson1.setOrganization(组织);
orgperson2.setOrganization(组织);
orgset.add(orgperson1);
orgset.add(orgperson2);
org.setOrgpersons(orgset);
session.save(org);
session.getTransaction().commit();
session.close();
}
}

@Column(unique=true,nullable=false)私有int-orgid
为该列指定一个类似于
@Column(name='orgid',unique=true,nullable=false)private int-orgid的名称@JoinColumn(name=“orgid”)
@ManyToOne
移动到get方法
公共组织getOrganization()
我已经像您所说的那样进行了更改,但仍然没有插入到orgperson表中。