Hibernate获取具有嵌套实体的特定列的实体

时间:2016-06-07 16:13:50

标签: hibernate projection

我有两个实体:

@Entity
@Table(name = "animals")
public class Animal extends BaseEntity {
    private String nickname;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "species_id", nullable = false)
    private Species species;
}

@Entity
@Table(name = "species")
public class Species extends BaseEntity {
    private String scientificName;
    private Integer animalsPerHouse;
}

如何以Animal字段获取Species,例如scientificName?如何告诉Hibernate我只需要嵌套实体的特定字段?

渴望的动物:

  {
    "id": 1,
    "nickname": "Locuroumee",
    "species": {
      "id": 161130,
      "scientificName": "Anguilla bicolor",
  }

实际动物:

  {
    "id": 1,
    "nickname": "Locuroumee",
    "species": {
      "id": 161130,
      "scientificName": "Anguilla bicolor",
      "animalsPerHouse": 4
  }

我已经花了很多时间进行投影,别名,但它没有帮助

1 个答案:

答案 0 :(得分:0)

此类任务有实体图表。

Dynamic fetching via JPA entity graph

JPA 2.1 Entity Graph – Part 1: Named entity graphs

JPA 2.1 Entity Graph – Part 2: Define lazy/eager loading at runtime

但是,看起来,Hibernate不支持部分字段加载,与EclipseLink相对。

您可以尝试使用自定义结果转换器: How to transform a flat result set using Hibernate