0

次のエンティティ クラスがあります。

public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "Id")
    private Integer id;
    @Size(max = 255)
    @Column(name = "Senha")
    private String senha;
    @Size(max = 255)
    @Column(name = "Nome")
    private String nome;
    @ManyToMany(mappedBy = "usuarioCollection", fetch = FetchType.EAGER)
    private Collection<Grupo> grupoCollection;      

}

public class Grupo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "Id")
    private Integer id;
    @Size(max = 255)
    @Column(name = "Nome")
    private String nome;
    @JoinTable(name = "usuario_grupo", joinColumns = {
        @JoinColumn(name = "GrupoID", referencedColumnName = "Id")}, inverseJoinColumns = {
        @JoinColumn(name = "UsuarioID", referencedColumnName = "Id")})
    @ManyToMany(fetch = FetchType.EAGER)
    private Collection<Usuario> usuarioCollection;

}

これらのコードは netbeans によって生成されました。

JPAで永続化しようとすると

entityManager.persist(usuario);

実行されますが、usuario_grupo テーブルにレジスタがありません。

つまり、usuario はテーブルに登録されています (グループは既にテーブル grupo に存在します) が、usuario_grupo は登録されていません。

これを適切に行う方法を知っていますか?

注: 一部の名前はポルトガル語です。

4

2 に答える 2

1

私の推測では、コレクション関係の両側にオブジェクトを追加していないため、それらは書き込まれていません。

于 2012-09-04T13:52:48.213 に答える
-2

JPAは好きではありませんCollection。それはSet(順序付けられていないコレクション)、 List(順序付けられたコレクション)で動作し、私も信じHashMapています(私はそれを必要としなかったのでわかりません)。

Beanに属性が必要な場合は、それを作成し、それをまたはとして管理する新しい属性(少なくともgetメソッドとsetメソッド)を作成します。CollectiontransientCollectionSetList

于 2012-09-01T14:33:40.600 に答える