2016-11-13 18 views
1

私は次のクラスを持っています: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で

+0

Account findByDepartmentMemberId(@Param("id")int id); 

を追加することにより、作業得ることができましたか?私はAccount DepartmentMemberがEmbeddedとOneToOneの両方になるとは思わない。 – garfield

+0

@garfield私は実際にそれらを後で削除しましたが、物事の振る舞いを変更しませんでした。私のクエリはまだ動作していません:( –

答えて

0

コントローラには実際に別の問題がありました。私はそれは私があなたのマッピングが正しいことを確信している、上から少し混乱しているAccountRepository

関連する問題