我正在使用JPA与我的postgres数据库进行交互。
我有以下情况:我有两个对象 - 用户和项目,在我的项目对象中,我只想要用户的userId,而不是项目中的整个用户对象。
例如,我的用户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?
感谢。
答案 0 :(得分: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查询仅包含列名称一次。