使用JPA将单个属性从一个对象映射到另一个对象

时间:2016-09-18 05:28:58

标签: java spring jpa spring-data

我正在使用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?

感谢。

1 个答案:

答案 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查询仅包含列名称一次。