springboot +jpa 返回自定义类型
首先实体类:
@Table(name = "chart_type")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ChartTypeEntity {
@Id
private String code;
private String name;
@Transient
private Integer count;
}
在这里我有三个字段,但数据库这个表里面只有两个字段,所以加了@Transient注解,但问题是后面我从数据库查的内容 想保存到count里面去,直接查老返回是空,
jpa又不能直接自定义返回值类型
最后网上找了很久找到这种方法
public interface ChartTypeRepository extends JpaRepository<ChartTypeEntity, String> {
@Query(value = "SELECT COUNT(*) as count,chart_type.`code` as code,chart_type.`name` as name from chart LEFT JOIN chart_type on chart_type.`code`=chart.chart_type_code \n" +
"where chart.`business_code` = ?\n" +
"GROUP BY chart_type.`code` ;", nativeQuery = true)
public List<ChartTypeEntity> fdBusiness(String code);
@Query(value = "SELECT COUNT(*) as count,chart_type.`code` as code,chart_type.`name` as name from chart LEFT JOIN chart_type on chart_type.`code`=chart.chart_type_code \n" +
"where chart.`business_code` = ?\n" +
"GROUP BY chart_type.`code` ;", nativeQuery = true)
public List<ChartTyper> fadBusiness(String code);
public interface ChartTyper{
Integer getCount();
String getCode();
String getName();
}
一定要在ChartTypeRepository 接口里定义一个ChartTyper接口 用来表示返回值类型,你想接受的数据要写成 getXXX()形式 在sql语句中直接写 XXX就行 这样就可以获取到这些数据了,然后在外面自由封装