我想使用自定义查询从db获取一些数据。
@Query("select new com.myProject.UserConfDTO(cd.id, us.lastDeactivationTime, true) from UserConfig us " +
"join us.codes as cd where cd in :codes and us.userEnabled = 1 and us.state= 'ACTIVE'")
List<UserConfDTO> getAllEnabledUsersWithConf(@Param("codes") List<Codes> codes);
Codes.java:
@AllArgsConstructor
public class Codes{
private Integer id;
private String name;
}
UserConfDTO.java:
@AllArgsConstructor
public class UserConfDTO{
private Integer id;
private String name;
private Instant lastDeactivationTime;
private Boolean userEnabled;
}
UserConfig.java:
@Id
@GeneratedValue
private Long id;
@ElementCollection
@Builder.Default
private Set<Integer> codes = new HashSet<>();
private Instant lastDeactivationTime;
@Column(nullable = false)
private State state;
我想传递所有的代码对象 - 检查db中的一些东西,并返回准备好的UserConfDT对象。不幸的是,它不起作用。我得到例外:
IllegalArgumentException: Parameter value element [Codes(id=1234, name=test1)] did not match expected type [java.lang.Integer (n/a)]
我有UserConfig类/表,其中包含一对多的类/表代码。一个UserConfig可以有多个代码。 我想将List作为参数传递并从UserConfig数据中获取(通过每个代码ID属性) - &gt;接下来创建via(select new ..)UserConfDTO对象。
你知道怎么做吗?