2016-09-18 7 views
-2

JPAを使用して私のpostgresデータベースとやりとりしています。JPAを使用してあるオブジェクトから別のオブジェクトに1つのプロパティをマップする

私は次のような状況があります。ユーザーとアイテムの2つのオブジェクトがあり、アイテムオブジェクトには、アイテムのユーザーオブジェクト全体ではなくユーザーのユーザーIDが必要です。例えば

、私のユーザーPOJO:

public class User { 

    @Id 
    private String userId; 

    @OneToMany 
    private Item item; 

} 

public class Item { 

    @Id 
    private String itemId; 

    @ManyToOne 
    private String userId; 

} 

どのように私はちょうど私のItemオブジェクトにユーザーのuserIdを得ることができますか?

ありがとうございました。

+3

(1)なぜIDの文字列を使用していますか? (2)*なぜ*あなたは 'User'オブジェクトへの参照の代わりに文字列IDを使いますか? – chrylis

答えて

0

は考える:

class User { 
    @OneToMany 
    private Collection<Item> items; 
} 

class Item { 
    @JoinColumn(name = "user_id") 
    @ManyToOne 
    private User user; 
} 

あなたはItemエンティティにuserIDプロパティを追加し、user_id列にマップすることができます。以下は動作します:

class Item { 
    @JoinColumn(name = "user_id") 
    @ManyToOne 
    private User user; 

    @Column(name = "user_id", insertable = false, updatable = false) 
    private String userID; 
} 

を次の2つの属性が同じカラムにマッピングされているので、insertable = false, updatable = falseで合成属性をマップする必要があると私たちは確信してSQLクエリは一度だけ、列名が含まれていることを確認する必要があります。

関連する問題