2

キーとリソースの両方が休止状態によってマップされるエンティティである休止状態でのコレクションのマッピングに問題があるようです。

一方、ドキュメントから (この問題に関する私の主なリソースはこれでしたが、もちろん他のリソースも歓迎します: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/collections.html)これは比較的単純なタスクのように見えますが、マップのキーを永続化できないようです。

現状の私のコードは次のようになります。

親クラス:

@Entity
public class Parent {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @MapKey
    @MapKeyClass(Key.class)
    @ManyToMany(cascade = CascadeType.ALL)
    private Map<Key, Resource> map;

キークラス:

@Table(name="ParentKey")
@Entity
public class Key implements Comparable<Key> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "hierarchyKey")
    private int key;

リソース クラスは比較的単純な POJO であり、問​​題なく持続するため、問題はそのクラスにはないと思います。

休止状態フォーラムのいくつかのドキュメントで注釈 @MapKeyManyToMany に出くわしましたが、これは廃止されたと思います。

この段階では、データベースのスキーマは重要ではありません。主な関心事は、すべてがデータベースに永続化されていることを確認することです。基盤となるデータベースには MySQL を使用しています。

おそらくご想像のとおり、map、hibernate、entity、key という単語を含む検索では、この問題とは関係のない大量の質問が返されますが、これは用語でかなり頻繁に発生する状況であるに違いないと確信しています。マッピング状況の。

質問を送信することはあまりありませんが、私は活発な読者ですので、さらに情報が必要な場合はお知らせください.

4

1 に答える 1

1

これは指定どおりに機能します。操作はマップのキーにカスケードされません。それらは値にのみカスケードされます。ドキュメントでは、これは次の言葉で伝えられています。

ターゲットコレクションがjava.util.Mapの場合、カスケード要素はマップ値に適用されます。

キーは個別に永続化する必要があります。

于 2012-09-12T18:10:59.877 に答える