2016-06-07 67 views
0

的特定列的實體,我有兩個實體:休眠得到嵌套實體

@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 
    } 

我已經花了很多時間與預測,別名,但它並不能幫助

+0

我也有類似的問題[這](http://stackoverflow.com/questions/12105757/complex-hibernate-projections) – hardcoder

回答

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

+0

投影用於部分字段加載。它的工作原理)它可能與嵌套的實體字段一起工作......但我不知道如何 – hardcoder

+0

@hardcoder請看這裏的一個例子:http://stackoverflow.com/a/36361630/3405171 –

+0

已經看到)他們使用定製變壓器。但顯然有沒有它的解決方案。 – hardcoder