gpt4 book ai didi

使用 Spring 构造函数的 JAVA Rest Service 需要有太多参数

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:00 25 4
gpt4 key购买 nike

第一个问题在这里。我目前正在使用 Spring Data 开发一些 Rest 服务,一切都工作正常,但我面临这个问题:

我的一个实体需要有一个 22 个参数的构造函数才能工作。这是 spring 能够正确映射它的唯一方法,如果我尝试解决这个设计不良的构造函数,我会得到以下结果:

无法在类上找到适当的构造函数:com.x.core.model.xxx;嵌套异常是 java.lang.IllegalArgumentException:无法在类上找到适当的构造函数:com.x.core.model.xxxx

但是,如果我按原样保留构造函数(包含 22 个参数),检查列表将因构造函数上的参数数量而引发错误。

我一直在到处寻找解决方案,但还没有找到。

请记住,我更改了变量名称是为了保护公司数据。

谢谢

@Entity
@IdClass(MYCLASS.class)
@XmlRootElement
@NamedNativeQueries({
@NamedNativeQuery(name = "MYCLASS.findAll",
query
= "SELECT * from table",
resultClass = MYCLASS.class, resultSetMapping = "MyClassMap"
)
})
@SqlResultSetMappings({
@SqlResultSetMapping(name = "MyClassMap",
classes = {
@ConstructorResult(targetClass = MYCLASS.class,
columns = {
@ColumnResult(name = "id", type = Integer.class)//etc... THIS IS CORRECT
,})})
})
public class MYCLASS implements Serializable {

@Id
private Integer paramid;
@Id
private Integer param1;
private String param2;
@Id
private long paramx;
private Integer paramx;
private String paramx;
private Double paramx;
private String paramx;
private Double paramx;
private String paramx;
private String paramx;
private String paramx;
private Double paramx;
private Double paramx;
private Integer paramx;
private Integer paramx;
private Integer paramx;
private Integer paramx;
private Integer paramx;

public MYCLASS(Integer paramx, Integer paramx, String paramx, long paramx, Integer paramx, String paramx, Double paramx, String paramx, Double paramx, String paramx, String paramx, String paramx, Double paramx, Double paramx, Integer paramx, Integer paramx, Integer paramx, Integer GASTO, Integer paramx) {
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
this.paramx = paramx;
}//TOO MANY PARAMETERS!!!!!



//getters ,setters, equals and hash

最佳答案

明白了!看来,当您需要非托管实体的结果集映射时,您可以直接使用 @ColumnResult 来代替,它会起作用。这样您就可以避免使用构造函数。

@SqlResultSetMappings({
@SqlResultSetMapping(name = "map",
columns = {
@ColumnResult(name = "id", type = Integer.class)})})

关于使用 Spring 构造函数的 JAVA Rest Service 需要有太多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44139687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com