私のデータベースはOrganisation
とUser
の2つのテーブルで構成されています。組織内には多数のユーザーを保持できるManyToOne
の関係があります。Hibernateでの外部キーの共有
私はここに、私の問題を共有する前には、私の実体である:
@Entity
@Table(name = "organisation")
public class OrganisationEntity {
@Id
@Column(name = "orga_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String name;
// Getters & Setters
}
- ここ
@Entity
@Table(name = "\"user\"")
public class UserEntity {
@Id
@Column(name = "user_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String email;
@NotNull
private String firstName;
@NotNull
private String lastName;
@NotNull
private String password;
@ManyToOne(targetEntity = OrganisationEntity.class,cascade = CascadeType.ALL)
@JoinColumn(name = "orga_id")
private OrganisationEntity organisation;
// Getters & Setters
}
二人のユーザが同じ名前の組織が割り当てられたときに、私の問題である、と述べました組織は2種類のIDを持つOrganisation
テーブルに2回作成されます。新しいユーザーに既に組織のIDが割り当てられている場合は、そのIDを新しいユーザーに割り当てることを希望します。
したがって、ユーザーU1 & U2がO1という組織で作成されている場合は、どちらも同じorga_id
であり、データベースに作成する組織エントリは1つだけにする必要があります。
どのように達成できますか? Hibernate
の私の理解に欠けているものは何ですか?要求で
、ここではユーザ登録時にUserEntity
を作成し、私のサービスは以下のとおりです。
@Override
public UserInfo createUser(UserInfo newUser) {
return mapper.map(userDao.save(mapper.map(newUser)));
}
私はUserEntity
へMapstruct
でオブジェクトをマッピングし、私のDAO
にそれを送る私の中でそれを保存するために、データベース。
に割り当てますが作成/更新エンティティを、同様のコードを投稿してくださいもらえますか? –
サービスを追加しました。十分でない場合はお知らせください。 – Christopher
「同じ」名前の組織に2人のユーザーを割り当てたと述べました。これは、2つの組織インスタンスを作成していると信じさせ、同じ名前を与えています。彼らは実際には同じ組織です。 1つの組織をインスタンス化して両方のユーザーに割り当てる必要があります。 OrganizationEntityとUserEntityを作成する場所にコードを投稿できますか? –