java getquerydata_java – NativeQuery Spring Data返回对象

我需要在Spring Data中实现这样的查询: –

Select User.name, sum(Activity.minutes)

From User, Activity, ActivityStatus

Where User.id = ActivityStatus.userId

And Activity.id = ActivityStatus.activityId

AND ActivityStatus = "COMPLETED"

GROUP BY user.name;

所以我需要加入3个表,因此我必须使用带有nativeQuery = true的@Query(如果我错了,请纠正我)

所以我的Repository方法看起来像这样: –

@Query(value = "Select User.name, sum(Activity.minutes) as total_minutes

From User, Activity, ActivityStatus

Where User.id = ActivityStatus.userId

And Activity.id = ActivityStatus.activityId

AND ActivityStatus = "COMPLETED"

AND User.Type = ?1

GROUP BY user.name;",

nativeQuery = true

)

List getTotalActivityMinutesByUserType(String userType);

MyObj类看起来像这样: –

public class MyObj {

String name;

long total_minutes;

// getter and setter methods

public MyObj(String name, long total_minutes) {

this.name = name;

this.total_minutes = total_minutes;

}

}

我的测试方法: –

@Test

public void TotalActivityTest() throws Exception {

List objA = myRepository.getTotalActivityMinutesByUser("TEST");

}

我得到以下例外: –

org.springframework.core.convert.ConversionFailedException: Failed to

convert from type [java.lang.Object[]] to type

[com.mycomp.MyObj] for value ‘{TEST, 5.0}’; nested

exception is

org.springframework.core.convert.ConverterNotFoundException: No

converter found capable of converting from type [java.lang.String] to

type [com.mycomp.dto.MyObj]

我需要一种方法将结果作为MyObj返回. (或者至少是将它投射到MyObj的方法)这可能吗?

编辑:

从@ Cepr0的回答构建My Entity类看起来像这样: –

@Entity

public class ActivityStatus extends Base {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})

private Activity activity;

@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})

private User user;

}

我不确定JPQL中的JOIN查询应该如何…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值