java - 我是否总是需要在保存 Hibernate 主对象时显式设置子对象

标签 java hibernate spring jpa binding

我有类人

public Person() {
    //passports = new AutoPopulatingList<Passport>(Passport.class); 
    passports = new AutoPopulatingList<Passport>(new PassportFactory(this));
}


@Id
@Column(name = "PERSON_ID")
@GeneratedValue
 public Integer getId() {
  return id;
 }

@Column(name = "FIRST_NAME")
public String getFirstName() {
 return firstName;
}

@Column(name = "LAST_NAME")
public String getLastName() {
 return lastName;
}

@Column(name = "MONEY")
public Double getMoney() {
 return money;
}

@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="person")
@JoinColumn(name="person_id")
public List<Passport> getPassports(){
      return this.passports;
 }

类(class)护照

@Id
@Column(name = "passport_id")
@GeneratedValue
public Integer getPassport_id() {
    return passport_id;
}

@Column(name = "country_issue")
public String getCountry_issue() {
    return country_issue;
}


@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="person_id")
public Person getPerson(){
    return person;

}

是双向的一对多关系。

一开始我是这样存钱的

session.save(person);

而且它没有在护照表中保存 person_id,然后有人告诉我这样做

for(Passport passport : person.getPassports())
      {
          passport.setPerson(person);
      }
 session.save(person);

这样做成功了!!

我的问题是,如果我使用 ElementFactory 并在护照中设置人员对象

public Object createElement(int index) {
    Passport passport = new Passport();
    passport.setPerson(person);
    return passport;

那为什么我又要明确地把这个人设置成卑鄙的

这是我在 autopopulateList 中使用的 Passportfactory 类

public class PassportFactory implements AutoPopulatingList.ElementFactory {
  private Person person;

  public PassportFactory(Person person) {
     this.person = person;
  }

  public Object createElement(int index) {
    Passport passport = new Passport();
    passport.setPerson(person);
    return passport;
  }
}

最佳答案

是的,双向关联是由用户手动处理的(就像你展示的那样)

关于java - 我是否总是需要在保存 Hibernate 主对象时显式设置子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219657/

相关文章:

java - 错误提示 "Bad version in .class file"

java - LiquiBase问题,类路径资源[db/changelog/db.changelog-master.yaml]无法解析为URL,因为它不存在

mysql - BoneCP 连接超时

java - 如何在JPA中保留父级和子级?

java - Spring Jpa Hibernate 列未转换为查询

java - 银行转账同步

java - 如何使用 JDOM 编写和获取同一级别中具有相同名称的所有 xml 元素

java - 实体类总是需要 ID 吗?

java - 尝试获取对象列表时应该使用通用类型还是通配符?

java - 如何配置 spring-integration-sftp 将远程文件下载到本地文件系统后移动?