私はこれに非常に似た問題があります:How do I join tables on non-primary key columns in secondary tables? しかし、私は同じ解決策を適用できるかどうかはわかりません。外部キーを使用して2つのテーブルを1つのエンティティにマップする方法はありますか。
私はこれらのような二つのテーブルがあります:私はCustomer
と呼ばれる単一のクラスにこれらのテーブルをマッピングしたいのですが、私は持っている
CREATE TABLE CUSTOMER
(
CUSTOMER_ID INTEGER NOT NULL,
DETAIL_ID INTEGER NOT NULL,
PRIMARY KEY(CUSTOMER_ID),
CONSTRAINT cust_fk FOREIGN KEY(DETAIL_ID) REFERENCES DETAILS(DETAIL_ID)
)
CREATE TABLE DETAILS
(
DETAIL_ID INTEGER NOT NULL,
OTHER INTEGER NOT NULL,
PRIMARY KEY(DETAIL_ID)
)
を:
@Entity
@Table(name = "CUSTOMERS")
@SecondaryTable(name = "DETAILS", [email protected](name="DETAIL_ID"))
public class Customer {
@Id
@GeneratedValue
@Column(name = "CUSTOMER_ID")
private Integer id;
@Column(table = "DETAILS", name = "OTHER")
private Integer notes;
// ...
}
が、これは場合にのみDETAIL_ID
の作品プライマリテーブルのCUSTOMER_ID
に一致します。
私の質問は、プライマリテーブルの外部キーフィールドをセカンダリテーブルのプライマリキーに結合するにはどうすればいいですか?
UPDATE 私が設定してみました:
@SecondaryTable(name = "DETAILS", [email protected](name="DETAIL_ID", referencedColumnName="DETAIL_ID"))
を私はアプリケーションを実行すると、私はこの例外を取得:
org.hibernate.MappingException: Unable to find column with logical name: DETAIL_ID in org.hibernate.mapping.Table(CUSTOMERS) and its related supertables and secondary tables
2つのテーブルがあり、1つのテーブルにそれらを結合しますか? –
@SerenityStackHolderはい、1つのエンティティに2つのテーブルをマップしたいと思います。しかし、プライマリテーブルにセカンダリテーブルの外部キーがあります。 – davioooh