【问题标题】:Map a single property from one object to another using JPA使用 JPA 将单个属性从一个对象映射到另一个对象
【发布时间】:2017-01-26 00:53:16
【问题描述】:

我正在使用 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) 为什么要使用字符串作为 ID? (2)为什么要字符串ID而不是User对象的引用?

标签: java spring jpa spring-data


【解决方案1】:

给定:

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 查询只包含一次列名。

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多