Tengo las clases de entidad a continuación. Cuando un usuario se registra por primera vez, solo se proporciona el nombre de usuario y la contraseña, por lo que la lista de cuentas (perfiles de opinión) está vacía. Más tarde, cuando agregan una cuenta, el objeto del usuario se actualiza en el cliente, se pasa al servidor y luego se llama a entityManager.merge (usuario). Cuando el usuario se fusiona, la cuenta se agrega 6 veces a la base de datos y la dirección suministrada se agrega tres veces. No estoy seguro por qué. Me gustaría que la cuenta se agregue una vez y solo se agregue una dirección. ¿Alguna idea sobre lo que puede estar pasando?JPA Merge Is Causing Duplicates
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_accounts")
private List<Account> accounts;
//...getters and setters ...
}
@Entity
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private long id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="address")
private Address address;
//...getters and setters...
}
@Entity
public class Address implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="street")
private String street;
@Column(name="city")
private String city;
@Column(name="state")
private String state;
@Column(name="zip")
private String zip;
//...getters and setters...
}
Usted puede dejar cosas por el estilo @Column (name = "id") o @Column (name = "zip") si no va a cambiar los nombres. – whiskeysierra
el servidor activo está predeterminado en todos los nombres de tabla y columna y mi servidor de prueba está predeterminado en minúscula, por lo que parecía más fácil que cambiar la configuración. – chris
¿Encontró una solución? –