2016-09-18 116 views
-2

我正在使用JPA與我的postgres數據庫進行交互。使用JPA將單個屬性映射到另一個對象使用JPA

我有以下情況:我有兩個對象 - 用戶和項目,在我的項目對象中,我只想要用戶的用戶標識,而不是項目中的整個用戶對象。

例如,我的用戶POJO:

public class User { 

    @Id 
    private String userId; 

    @OneToMany 
    private Item item; 

} 

public class Item { 

    @Id 
    private String itemId; 

    @ManyToOne 
    private String userId; 

} 

如何我只是得到了用戶的用戶id在我的項目對象?

謝謝。

+3

(1)爲什麼使用字符串作爲ID? (2)*爲什麼*你想要字符串ID而不是對'User'對象的引用? – chrylis

回答

0

考慮:

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

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

可以將userID屬性添加到Item實體,並將其映射到user_id列。下面的工作:

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

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

您需要的合成屬性與insertable = false, updatable = false因爲兩個屬性被映射到相同的列映射,我們需要確保SQL查詢包含列名只有一次。

相關問題