如何序列化一个属性,但不坚持使用弹簧数据?
林学春数据+ 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
但它是空的。
我该怎么办?
为@Antoniossss谢谢!编辑他的回答:
你想要做的是投影,这就是你如何在春季数据中做出 投影。你可以上山,并使用适当的 的构造函数:
@Query(SELECT ... new())(full sum.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
}
这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [发表评论](/ review/low-quality-posts/17686603) –
这正是我所做的......'@Query(SELECT new full.qualified.name.of.class(sum as sum,... ..其他参数)from ...)'并用'@ transient'注解添加一个属性: –
。更改类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)
通知,查询必须返回两列
我不想创建一个数据持有者(一个接口)...我想在Group Entity中添加一个属性,但不要坚持它并在可用时序列化 –
你想要做什么是做投影,这就是你如何在春天做投影数据。你可以上山,并使用适当的构造函数'@Query(SELECT new full.qualified.name.of.class(sum as sum,..... other arguments)' – Antoniossss
你是说这是不可能的有一个属性可以被序列化,但不会持久? –
告诉我 – Antoniossss
您可以使用数据库视图或提供扩展名(如Hibernate的'@ Formula'注解)库方法签名,如本概述回答:https://stackoverflow.com/questions/43407889/prefered-way-to-map-a-result-set-with-entity-and-count-using-spring-data/43411008#43411008 –