私はドメインオブジェクトを持っています
@Entity
@Table (name = "vw_t_bucket")
public class TBucket {
....
@ManyToOne (cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.EAGER, targetEntity = Prd.class)
@JoinColumns({
@JoinColumn(name = "key", referencedColumnName="key"),
@JoinColumn(name = "cdate", referencedColumnName="cdate")
})
public IPrd getPrd() {
return prd;
}
....
@ManyToOne (cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.EAGER, targetEntity = Acct.class)
@JoinColumn (name = "acct", nullable = false)
public IAcct getAcct() {
return acct;
}
}
@Entity
@Table (name = "product")
public class Prd implements IPrd {
...
}
@Entity
@Table (name = "vw_acct")
public class Acct implements IAcct {
...
}
ご覧のとおり、TBucket はビューであり、テーブル ( product ) と別のビュー ( vw_acct) に結合されています。
ビューとテーブルの両方を結合するとパフォーマンスが低下し、ビューをテーブルに変更する必要があるとデータベースから言われました。
ただし、ビュー自体は複数のテーブルからの結合で構成されています。
私のリードは、結合 SQL をアノテーションに直接入れることができる解決策があるかどうか疑問に思っていました。私は、ドメイン オブジェクトとのマッピングにのみテーブル/ビューを使用できると彼に言いました。
この問題に対する可能な解決策があるかどうか疑問に思っています。