TABLE_A
- ID
- 選別
TABLE_B
- ID
ManyToMany 関連付けられたこれらのテーブルを使用して、REF テーブルがあります。
TABLE_REF
- 援助
- 入札
B.getAs() を使用してデータを取得しています
OrderBy TABLE_A.SORT フィールドとして取得したい。このため、OrderBy を追加しようとしましたが、A の近くにある B の関係で ORDER フィールドにアクセスできません。
というわけで、SORTフィールドもREFテーブルにJoinできれば、Bのリレーションマップで@OrderBy(clause="ORDER")パラメータが使えると思います。
しかし、何時間も解決策を見つけることができませんでした。
マッピングに使用するコードは次のとおりです。
表_A:
@ManyToMany(fetch=FetchType.EAGER, targetEntity = Role.class, cascade={CascadeType.MERGE, CascadeType.PERSIST})
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "NC_ADMIN_ROLE_PAGE_XREF", joinColumns =
@JoinColumn(name = "PAGE_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID", nullable = true))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="ncAdminElements")
@BatchSize(size = 50)
private List<Role> allRoles = new ArrayList<Role>(10);
テーブル_B:
@Column(name = "NAME")
private String name;
@ManyToMany(fetch=FetchType.EAGER, targetEntity = Page.class, cascade={CascadeType.MERGE, CascadeType.PERSIST})
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "NC_ADMIN_ROLE_PAGE_XREF", joinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "PAGE_ID", referencedColumnName = "ID", nullable = true))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="ncAdminElements")
@BatchSize(size = 50)
private List<Page> allPages = new ArrayList<Page>(10);
私がまさに欲しいのは、 TABLE_B.getAllPages() が TABLE_A.DISPLAY_ORDER で注文された
ダミーの休止状態でのマッピング関係に関するよくできた情報源は、私にとって適切です。