私はpostgres dbを使用します。私は、ユーザーとuser_informationで、ユーザーはuser_informationへのリンクを持っている2つのテーブルを作成しました:JPA双方向マッピングを1対1で使用すると、エンティティを1つの直接エンティティから永続化できない
CREATE TABLE USERS(
id NUMERIC PRIMARY KEY DEFAULT NEXTVAL('users_id'),
password TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
CREATE TABLE USERS_INFORMATION(
id NUMERIC PRIMARY KEY DEFAULT NEXTVAL('users_information_id'),
user_id NUMERIC UNIQUE REFERENCES USERS(ID) NOT NULL,
firs_name TEXT DEFAULT NULL,
last_name TEXT DEFAULT NULL,
SEX TEXT DEFAULT NULL,
BIRTHDAY DATE DEFAULT NULL
);
、私はJPAエンティティの作成: ユーザー:
@Entity
...
public class User implements Serializable {
...
public User() {
}
...
@OneToOne(mappedBy="user", fetch=FetchType.LAZY)
public UsersInformation getUsersInformation() {
return this.usersInformation;
}
}
とuser_information:
@Entity
...
public class UsersInformation implements Serializable {
...
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="user_id")
public User getUser() {
return this.user;
}
...
}
なぜ私をオブジェクトuser_informationオブジェクトを作成することができますオブジェクトのユーザーエンド使用永続化(user_informtion)とは仕事ですが、私はユーザーを作成し、user_informationをユーザーに設定し、p ersist(user)トランザクション例外ですか?どのように私はそれを修正することができます。 JPA eclipselink、ファサードやグラスフィッシュのようなejbを使用します。
オブジェクト参照を両方向に設定するのを忘れましたか?私はそれに応じて 'setUserInformation(user)'と 'setUser(userInfo)'を呼び出すことを意味しますか? – coladict
ありがとう、それは働いています) – JugerJuger
@coladict、OPがそれを受け入れることができるように答えとしてあなたのコメントを配置してください。 – aribeiro