Java 一夫一妻制的关系不存在';不保存外键

Java 一夫一妻制的关系不存在';不保存外键,java,hibernate,rest,Java,Hibernate,Rest,我正在hibernate查询中处理一个OneToMany关系。它工作正常,但是donorId不会进入blood表格 捐赠者类别: @Entity @Table(name = "DONOR") public class Donor { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int donorId; private String firstName; private String lastName; private in

我正在hibernate查询中处理一个
OneToMany
关系。它工作正常,但是
donorId
不会进入
blood
表格

捐赠者类别:

@Entity
@Table(name = "DONOR")
public class Donor {

@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int donorId;
private String firstName;
private String lastName;
private int age;
private String cnic;
private String contactNumber;
private String homeNumber;
private String country;
private String city;
private String town;
private String streetNo;
private String houseNo;
private String email;

@OneToMany(mappedBy="donor")
private Set<Blood> blood;

public int getDonorId() {
    return donorId;
}
public void setDonorId(int donorId) {
    this.donorId = donorId;
}
public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public String getCnic() {
    return cnic;
}
public void setCnic(String cnic) {
    this.cnic = cnic;
}
public String getContactNumber() {
    return contactNumber;
}
public void setContactNumber(String contactNumber) {
    this.contactNumber = contactNumber;
}
public String getHomeNumber() {
    return homeNumber;
}
public void setHomeNumber(String homeNumber) {
    this.homeNumber = homeNumber;
}
public String getCountry() {
    return country;
}
public void setCountry(String country) {
    this.country = country;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}
public String getTown() {
    return town;
}
public void setTown(String town) {
    this.town = town;
}
public String getStreetNo() {
    return streetNo;
}
public void setStreetNo(String streetNo) {
    this.streetNo = streetNo;
}
public String getHouseNo() {
    return houseNo;
}
public void setHouseNo(String houseNo) {
    this.houseNo = houseNo;
}
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}

public Set<Blood> getBlood() {
    return blood;
}

public void setCity(Set<Blood> blood) {
    this.blood = blood;
}
}
血液和捐赠者对象类:

public class BloodDonor {

private Donor donor;
private Blood blood;
public Donor getDonor() {
    return donor;
}
public void setDonor(Donor donor) {
    this.donor = donor;
}
public Blood getBlood() {
    return blood;
}
public void setBlood(Blood blood) {
    this.blood = blood;
}
}
血液服务等级:

public class BloodService {

SessionFactory sessionFactory = null;

public BloodDonor addNewBlood(BloodDonor bloodDonor){
    try{
        Blood blood = new Blood();
        Donor donor = new Donor();
        blood = (Blood)bloodDonor.getBlood();
        donor = (Donor)bloodDonor.getDonor();
        sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(donor);
        session.save(blood);
        session.getTransaction().commit();
        session.close();

    }catch(Exception ex){
        ex.printStackTrace();
    }
    return bloodDonor;
}
}
血液资源:

@Path("blood")
public class BloodResource {

BloodService bloodService = new BloodService();

@Path("new")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public BloodDonor addNewDonor(BloodDonor blood){
    return bloodService.addNewBlood(blood);
}
}
控制台:

Hibernate: select nextval ('hibernate_sequence')
Hibernate: select nextval ('hibernate_sequence')
Hibernate: insert into DONOR (age, city, cnic, contactNumber, country, email, firstName, homeNumber, houseNo, lastName, streetNo, town, donorId) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into BLOOD (bloodType, donor_id, price, bloodId) values (?, ?, ?, ?)

第一名:

添加级联类型:

@OneToMany(cascade = CascadeType.ALL, mappedBy="donor")
private Set<Blood> blood;
如果您的数据库结构一切正常,这应该是可行的

@OneToMany(cascade = CascadeType.ALL, mappedBy="donor")
private Set<Blood> blood;
Session session = sessionFactory.openSession();
session.beginTransaction();
Donor donor = new Donor();
Blood blood = new Blood();
blood.setDonor(donor);
HashSet<Blood> bloods = new HashSet<Blood>();
bloods.add(blood);
donor.setBlood(bloods);
//set some another fields if you want or they are NOT NULL in database
session.save(donor); //blood should be saved automatically due to cascade
session.getTransaction().commit();
session.close();