7

私は2つのテーブルを持っています:

  1. ユーザー:

    • user_id (プライマリ)

    • など..

  2. ユーザー情報

    • ID (プライマリ)

    • user_id (一意)

    • など..

userと現場でoneToOneの関係を築きたいと考えuser_infoていuser_idます。これは一意ですが、プライマリではないことに注意してください。Hibernateで実行できますか?私が何をしていても、Hibernateusers_info.idは u フィールドの代わりにフィールドを使用しようとしsers_info.user_idます。

@OneToOne(mappedBy="user_id", cascade = {CascadeType.ALL}, fetch=FetchType.LAZY, optional=true)
@JoinColumn (name="user_id")    
public UserInfo getUserInfo() { return userInfo; }
public void setUserInfo(UserInfo userInfo) { this.userInfo = userInfo; }
private UserInfo userInfo;
4

4 に答える 4

3

あなたUserが持っている必要があります:

@OneToOne(mappedBy="user", cascade = CascadeType.ALL, fetch=FetchType.LAZY, optional=true)
public UserInfo getUserInfo() { return userInfo; }

そしてでUserInfo

@OneToOne
@JoinColumn(name="user_id")
public User getUser() { return user; }

こちらをご覧ください。これは、1 対 1 マッピングの 2 番目の例です。

于 2012-06-14T08:55:23.050 に答える
2

1 対 1 のマッピングとサロゲート ID である「一意の」キーが必要なのはなぜですか? 冗長です。1 対 1 のマッピングであるため、2 つの PK を等しくするだけです。

于 2012-06-14T08:48:31.167 に答える
0

結合するテーブル列を定義したとおりに、マッピングが機能するはずです。しかし、ゲッターメソッドですべての注釈を定義したので、1つだけよくわかりません。同じように機能します。

于 2012-06-14T08:53:20.257 に答える
0

はい、これでうまくいくはずです。1対1または多対1では、最初のテーブルに主キーがあり、2番目のテーブルに外部キーがあります。

于 2012-06-14T08:49:15.497 に答える