2017-05-22 5 views
0

Iamの参加カスタマイズ:N次のように「お互いを知らない」2つのテーブル間の関連:は単方向がMを設定するには、DataNucleusのAPIを使用しようと関係JDO

ブックス:著者

@PersistenceCapable 
public class Book{ 
    @Persistent(primaryKey = "true") 
    @Column(name = "isbn", allowsNull = "false") 
    private int userId; 

    private String isbnCode; 

    private Str5ing title; 

    @Persistent(table="BOOK_AUTHOR") 
    @Join(column="isbn") 
    @Element(column="authorId") 
    Collection<Author> bookAuthors = new HashSet<Author>(); 
} 


@PersistenceCapable 
public class Author{ 
    @Persistent(primaryKey = "true") 
    @Column(name = "author_id", allowsNull = "false") 
    private int authorId; 

    private String firstName; 

    private Str5ing lastName; 

    @Persistent(table="BOOK_AUTHOR") 
    @Join(column="authorId") 
    @Element(column="isbn") 
    Collection<Book> bookAuthors = new HashSet<Book>(); 
} 

このリンクJDO's mappingのとおり、新しいId列を持つ3番目のテーブルが結合テーブルとして作成されます。

私は二つの質問は何のバグ:

  1. 上記で作成したばかりではありませんリンクに述べたようにID列。
  2. もう少し情報を追加するために3番目のテーブルをカスタマイズしたいと思います。それ、どうやったら出来るの?たとえば、リリース日や発行者名を追加する場合は、BOOK_AUTHORテーブルを制御する必要があります。 (PersistanceAwareアノテーションでこのタスクを達成しようとしていますが、テーブルレベルのアノテーションを使用すると、そのテーブルのどのカラムでも変更できないため、情報のみを表示できます。
  3. 私は、問題2を乗り越えるん

どう?私はバージョンまたは2のための問題1と一緒に暮らすことができるが、それはあまりにも解決する必要があります。JDOのZensが助けてくださいすることができ

+0

1-Nだったあなたとは対照的に、私はthis linkを参照することになり、M-Nの関係については

「環境」とは何ですか? –

+0

申し訳ありません。それを著者に訂正しました。このコードの記述は独自の機能シナリオを反映しています –

答えて

1

物事への修正。

  1. mappedByを外して2つの関連フィールドをリンクできませんでした。それを追加する必要がありますので、双方向です。これが2つの独立した1-N関係であると仮定された場合、一方の側から挿入されたデータが他方の側からのデータとステップを離れてしまうので、どのようにして結合テーブルを共有できるかはわかりません
  2. "joinあなたのJavaモデルには「詳細情報」がないため、「テーブル」には「詳細情報」がありません。 JDO(またはJPA)は、Javaでモデル化したものだけをマップできます。余分なデータが必要な場合は、最初にそれをJavaモデルに入れる必要があります。これは通常、それを含む中間永続クラスを追加することを意味します。 GitHUbのthis sampleを参照してください。

意味が分からない"上記のリンクに記載されているID列は作成されていません。";あなたはリンクの "ADPT_PK_IDX"を意味しますか?それがすべての場合に当てはまるとは思わない。

+0

2を指摘するにはどうすればよいでしょうか?あなたは@PersistenceCapableクラスを構築し、その両端からマッピングを追加することを示していますか? –

+0

そして、ポイント1について、どのような状況でIDが生成されるのですか?私は文書を検索しましたが、それを非常にはっきりと知ることはできませんでした。 –

+0

2の場合、GitHubにサンプルがあります。https://github.com/datanucleus/samples-jdo/tree/master/many_to_many_attributed 1についてはわからない –

関連する問題