有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么在级联创建时不保存外键?

我有两个实体

@Entity
@Table(name = "groups")
public class Group {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne
    private Company company;

    ...
}

@Entity
public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToMany(mappedBy = "company", cascade = CascadeType.ALL)
    private Set<Group> groups = new HashSet<>();

    public void addGroup(final Group group) {
        groups.add(group);
    }

    ...
}

如果我单独保存每一个,那么一切都很好

Company company = companyRepository.save(new Company());

Group group = new Group();
group.setName("Managers");
group.setCompany(company);
groupRepository.save(group);

但如果我试图将团队的创建转移到Hibernate的肩上

Group group = new Group();
group.setName("Managers");

Company company = new Company();
company.addGroup(group);
companyRepository.save(company);

然后使用空的company字段创建组

db=> select * from groups;
 id |      name      | company_id
----+----------------+------------
  1 | Admins         |
  2 | Managers       |
  3 | Operators      |

我希望Hibernate能自己建立关系。我做错什么了吗


共 (0) 个答案