2017-10-19 130 views
0

林學春數據+ JPA,創造類似的查詢:如何序列化一個屬性,但不堅持使用彈簧數據?

public interface GroupRepository extends JpaRepository<Group, Integer> { 
    @Query("SELECT g.group, sum(ball) as sum from person ... group by ...", nativeQuery=false) 
    List<Group> BallPerGroup(); 
} 

的回報是:

sum |  group 
10  | group 1 
5  | group 2 
6  | group 3 

我有一個實體組:

public class Group{ 
    @Id @Genera... 
    private Integer id; 
    private String group; 

    //getters and setter 

} 

我有一個實體Person:

public class Person{ 
    @Id @Genera... 
    private Integer id; 
    private String name; 
    private Integer ball; 

    @OneToMany 
    private Group group; 


    //getters and setter 

} 

我想要一個名爲sum的屬性,那個spring數據可以序列化但不會持久化它。換句話說,我不想在我的數據庫中看到'sum'列。

我已經試過@transient但它是空的。

我該怎麼辦?

+0

告訴我 – Antoniossss

+0

您可以使用數據庫視圖或提供擴展名(如Hibernate的'@ Formula'註解)庫方法簽名,如本概述回答:https://stackoverflow.com/questions/43407889/prefered-way-to-map-a-result-set-with-entity-and-count-using-spring-data/43411008#43411008 –

回答

0

爲@Antoniossss謝謝!編輯他的回答:

你想要做的是投影,這就是你如何在春季數據中做出 投影。你可以上山,並使用適當的 的構造函數:

@Query(SELECT ... new())(full sum.qualified.name.of.class(s​​um as sum,..... other arguments)from ...)

這就是我所做的和按預期工作。

所以,我添加一個屬性與@transient註釋:

public class Group{ 
    @Id @Genera... 
    private Integer id; 
    private String group; 

    @Transient 
    private Integer sum; 

    //getters and setter 

} 
+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [發表評論](/ review/low-quality-posts/17686603) –

+0

這正是我所做的......'@Query(SELECT new full.qualified.name.of.class(s​​um as sum,... ..其他參數)from ...)'並用'@ transient'註解添加一個屬性: –

1

。更改類interface,然後宣佈你的方法是這樣

public interface GroupInterface { 
privte String groupName; 
private Long sum 
} 

....

@Query(SELECT sum(a) as sum, groupNameColumn as groupName from ... inner join group ... group by ... 
public List<GroupInterface> getMyResults(add some arguments if needed) 

通知,查詢必須返回兩列

+0

我不想創建一個數據持有者(一個接口)...我想在Group Entity中添加一個屬性,但不要堅持它並在可用時序列化 –

+1

你想要做什麼是做投影,這就是你如何在春天做投影數據。你可以上山,並使用適當的構造函數'@Query(SELECT new full.qualified.name.of.class(s​​um as sum,..... other arguments)' – Antoniossss

+0

你是說這是不可能的有一個屬性可以被序列化,但不會持久? –

相關問題