我正在研究spring数据+ 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
}
我有一个实体人员:
public class Person{
@Id @Genera...
private Integer id;
private String name;
private Integer ball;
@OneToMany
private Group group;
//getters and setter
}
我希望有一个名为sum的属性,spring数据可以序列化,但不要持久化。换句话说,我不想看到&#39; sum&#39;我的数据库中的列。
我已经尝试了@transient
,但它是空的。
我该怎么做?
答案 0 :(得分: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)
请注意,查询必须返回2列
答案 1 :(得分:1)
感谢@Antoniossss!编辑他的回答:
你想要做的是投影,这就是你的表现 春季数据预测。你可以上山去使用 构造函数:
@Query(SELECT new full.qualified.name.of.class(sum as sum,..... other arguments)from ...)
这就是我所做的和按预期工作的。
因此,我添加了一个带有@transient
注释的属性:
public class Group{
@Id @Genera...
private Integer id;
private String group;
@Transient
private Integer sum;
//getters and setter
}