JPA 2.1、mysqlを使用しています。JPA ManyToManyが作成時に結合テーブルに挿入されない
エンティティUsuario
@Entity
@Table(name = "USUARIO")
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID_USUARIO")
private Integer id;
@Column(name = "NOMBRE", length = 30)
private String nombre;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "integrantes", cascade = {CascadeType.ALL})
private List<NucleoFamiliar> nucleosFamiliares;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "integrantes", cascade = {CascadeType.ALL})
private List<GrupoJaas> gruposJaas;
... getters setters
}
エンティティGrupoJaas
@Entity
@Table(name = "GRUPO_JAAS")
public class GrupoJaas {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID_GRUPO_JAAS")
private Integer id;
@Column(name = "NOMBRE", length = 30)
private String nombre;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "INTEGRANTE_GRUPO_JAAS", joinColumns = {
@JoinColumn(name = "ID_GRUPO_JAAS") }, inverseJoinColumns = @JoinColumn(name = "ID_USUARIO"))
private List<Usuario> integrantes;
... getters setters
}
エンティティNucleoFamiliar
私は "integrantes" の非空のリストを持つ新しい "NucleoFamiliar" を作成
@Entity
@Table(name = "NUCLEO_FAMILIAR")
public class NucleoFamiliar {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID_NUCLEO_FAMILIAR")
private Integer id;
@Column(name = "NOMBRE", length = 100)
private String nombre;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "INTEGRANTE_NUCLEO_FAMILIAR", joinColumns = {
@JoinColumn(name = "ID_NUCLEO_FAMILIAR") }, inverseJoinColumns = @JoinColumn(name = "ID_USUARIO"))
private List<Usuario> integrantes;
... getters setters
}
、 jpaは期待通りに2つの文を実行します:
insert into NUCLEO_FAMILIAR
insert into INTEGRANTE_NUCLEO_FAMILIAR
私は新しい「Usuarioは」「gruposJaas」の非空のリストを作成する10は、JPAは一つだけの文を実行:
insert into USUARIO
はなぜINTEGRANTE_GRUPO_JAASに挿入実行されていませんの!?
両方のコード(「NucleoFamiliar」を作成し、「Usuario」を作成する)はほぼ同じです。つまり、ほとんど同じです。指定した@ManyToManyの関連マッピングでmappedBy属性を使用してUsarioクラスで
あなたのマッピングは正しいと思われます。エンティティを作成し保存するコードはどこですか?コードを投稿すると、なぜそれが動作していないかを知るのに役立ちます。 – ujulu