MSSQL Server 2012 の注文テーブルをマップする Entity-Bean を作成しました。これまでのところ問題なく動作していますが、Article-View のいくつかの列を結合して、選択した記事の詳細情報を提供したいと考えています。
注文は、その ID を Prime-Key とし、Article-Nr を Foreign-Key とする複数の行で構成されます。
記事を含むビューを Article-Entity にマップしようとしましたが、行数が多い (>10.000) ため、すべてが遅くなります (ただし、正常に機能します... 信じられないほど遅いです... 他に必要はありません。このビューをさらにマップします - 3 行の情報を除きます)。したがって、必要な列を Order-Entity に結合したいと思います。
しかし、私はそれを機能させません...
アノテーション「NamedQuery」で試してみました
@Entity
@NamedNativeQuery(name = "Joinnecessary",
query = "SELECT Order.PK_ID, Order.FK_OrderID, Order.FK_ArticleNr, Order.Amount,
Article.Description, Article.Price
FROM Order left outer join Article
on Order.FK_ArticleNr=Article.PK_ArticleNr",
resultClass = Order.class)
問題がどこにあるのか正確にはわかりません...私のレコードエンティティには注文エンティティのリストがあり、それらを表示します。
for(orders o: orderlist){
この行で、次のエラーが発生します。
SEVERE: オブジェクト名 'Order' が無効です。スレッド「メイン」org.hibernate.exception.SQLGrammarException での例外: コレクションを初期化できませんでした: [qohelet.Record.orders#1] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
文献で、1:1 の関係をマッピングするのに興味深いものを見つけました。(この観点から、私の関係はそのようなものと見なすことができます) @SecondaryTable-Annotation が見つかった場合、これはすべての問題の優れた解決策になる可能性があります。
@Table(name = "Order")
@SecondaryTable(name = "Article", pkJoinColumns = {
@PrimaryKeyJoinColumn(name = "PK_ArticleNr", referencedColumnName = "FK_ArticleNr")
})
私が参加する他の列は次のようになります。
@Column(table = "Article")
private String description;
しかし、注釈「PrimaryKeyJoinColumn」は理由もなくそのように命名されていないと思います...
最初の SessionFactory の作成に失敗しました。org.hibernate.AnnotationException: SecondaryTable JoinColumn は非主キーを参照できません
スレッド "main" での java.lang.ExceptionInInitializerErrorException
私が取得したい効果を持つ別の注釈はありますか? または、現在のものを間違って使用していますか?ありがとう!