我在两个表、人和地址之间有一个多到多的关系,中间有一个表Person_Address。我为这些实体提供了Daos和服务
我想要的是,当一个人被添加一个地址列表时,如果这些地址已经存在于数据库系统中,那么应该将这些地址的id添加到Person_Address表中。
所发生的是具有不同ids的重复值。
这样做的可能方法是在添加之前检查数据库,但是如果要这样做,我将编写自己的SQL查询,而不是hibernate。有没有办法让我在hibernate中实现我的目标?
人类
@Entity
@Table(name = "PERSON")
public class Person {
@Id
@Column(name = "personID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String surName;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "PERSON_ADDRESS", joinColumns = {
@JoinColumn(name = "PERSONID")}, inverseJoinColumns = {
@JoinColumn(name = "ADDRESSID")})
private List<Address> addresses = new ArrayList<>();地址类
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@Column(name = "addressID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "addresses")
private List<Person> residents;
private String street;
private String state;
private String country;
private String postCode;发布于 2015-08-07 14:00:34
如果实体没有ID. Hibernate将以不同的方式创建更新。
您应该在前面使用地址的预填。或者在保存前使用标准API搜索输入的地址。
发布于 2015-08-07 13:57:51
也许一种解决方案是更改数据库并将完整的入口设置为主键,您可以通过连接其他字段来获得它。为了确保嵌入内容是相同的,我认为您必须将其格式化为小写或大写。因此,当您将adresse,它将是主键,您将没有重复的数据。
https://stackoverflow.com/questions/31879240
复制相似问题