私は次のクラスを持っています:DepartmentMemberとAccountはOneToOne関係でマップされています。Spring JPAで主キーとしてPOJOを持つオブジェクトを取得する
これはDepartmentMemberクラスです:
@Entity(name="departmentmember")
@Table(name="departmentmember")
@Embeddable
public class DepartmentMember {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name="name", nullable=false)
private String nume;
@Column(name="lastName", nullable=false)
private String prenume;
@OneToOne(mappedBy="departmentMember",cascade=CascadeType.ALL,fetch=FetchType.LAZY, optional=false)
@JsonIgnore
private Account account;
public DepartmentMember() {}
public DepartmentMember(String nume, String prenume, String cNP, String email) {
super();
this.nume = nume;
this.prenume = prenume;
}
//getters and setters
}
そして、これはAccountクラスです:
@Entity(name="users")
@Table(name="users")
public class Account {
@Id
private int id;
@Column(name="username", unique=true, nullable=false)
private String username;
@Column(name="password", nullable = false)
private String password;
@Column(name="authorities", nullable=false)
private String authorities;
@OneToOne(fetch=FetchType.EAGER)
@MapsId
@Embedded
private DepartmentMember departmentMember;
public Account() {}
public Account(String username, String password, String authorities) {
super();
this.username = username;
this.password = password;
this.authorities = authorities;
}
//getters and setters
}
私は春JPAが提供するCrudRepositoryインタフェースを拡張するインタフェースのAccountRepositoryを定義しています。 私がやりたいことは、DepartmentMember IDをパラメータとして取得し、そのメンバの関連するアカウントを取得するクエリを定義することです。さて、これはAccountオブジェクトがどのように見えるかです:
{
"username": "Maria_Popescu",
"password": "4ec38c6e-2463-4562-99ba-9f6c2b4528c4",
"authorities": "ROLE_USER",
"departamentMember": {
"id": 2,
"nume": "Popescu",
"prenume": "Maria",
}
私はfindOne(int型のID)メソッドを使用してみましたが、それはうまくいきませんでしたので、これを解決するための正しいアプローチでありますか?
編集:
アカウントfindByDepartmentMemberId(int型のID)と、私はまだ見つからないエラーが表示されます。私は次のメソッドを定義しているAccountRepositoryで 。
に
を追加することにより、作業得ることができましたか?私はAccount DepartmentMemberがEmbeddedとOneToOneの両方になるとは思わない。 – garfield
@garfield私は実際にそれらを後で削除しましたが、物事の振る舞いを変更しませんでした。私のクエリはまだ動作していません:( –