私はエンティティBeanを実際に操作することはできませんが、現在、エンティティBeanは私を見つめています。
相互に関連するテーブルがいくつかありますが、外部キーがなく、追加することはできません。この質問では、データベースを変更することはできません。変更することはできませんが、別のソリューションとしてビューを作成する場合があります。いずれかの方法...
私は3つのテーブルを持っています。LOCATION、LINKS、ENDPOINT、および追加のソルトについては、LINKS_TYPEテーブルを使用します。
LOCATIONテーブルには、ロケーションIDを含む文字列である主キーLOCATIONIDがあります。
LINKSテーブルには、主キーとしてLINKIDがあり、ENDPOINTの主キーを含む列LINK_ATTR_VALUE_A、LOCATIONの主キーを含む列LINK_ATTR_VALUE_Bがあります。LINKS_TYPE主キーを含む列LINKTYPEID
ENDPOINTテーブルには主キーPOINTIDがあります
LINKS_TYPEには、主キーLINKTYPEID、列LINKTYPEA(リンク先のテーブル名を定義するテキスト文字列)、列LINKTYPEB(リンク先のテーブル名を定義するテキスト文字列)があります。
LINKS_TYPEが言及されていても、データベースのこのインスタンスには他のリンクがないため、今はそれについて心配する必要はありません。
LOCATIONエンティティの「ListendPoints」にメンバーを定義したいと思います。これは、私の理解では@OneToManyになります。ここで役立つ外部キーはなく、これまでにないことを覚えておいてください。
これは私が定義したマッピングです...
@OneToMany ( cascade=CascadeType.ALL)
@JoinTable ( name = "ENDPOINT",
joinColumns = @JoinColumn (
name = "LINK_ATTR_VALUE_B"
),
inverseJoinColumns =
@JoinColumn (
name = "LINK_ATTR_VALUE_A"
)
)
private List<EndPoint> endPoints;
このことから、私が何をしているのかわからないことに気付く可能性が非常に高いです:Dしかし、ドキュメントがあまりにも素晴らしく、ejb 3の助けを求める本を注文しましたが、この前に本を完成させる時間がありません。マッピング:D
TopLinkをjdeveloper11gで使用しており、そのweblogicサーバーとoracle10gをデータベースとして使用しています。
serviceFacadeクライアントを使用してクエリを実行すると、すべてが正しく表示されました(それ以降、ワークスペースが停止し、クライアントを機能させるためにプロジェクトを再作成する必要があります)。私の意見では、適切なデータを取得するための完璧なクエリが生成されます。しかし、それは結果なしで終わります。
何が必要かわからないので、できるだけ多くの情報を提供したいと思います。しかし、私のマッピングがおそらく間違っていることはわかっています。それは、マッピングを理解していないためです。
誰かが私を助けてもらえますか?
ありがとうございました。