Java 修复spring boot中存储过程之间的强制转换问题
我正在编写一个SpringBoot应用程序,其中我在代码中包含了一个存储过程。我有一个实体类,它有8列,我有一个存储过程,它接受一个参数并从该实体类传回3列。但是,当我调用存储过程时,它抛出一个Java 修复spring boot中存储过程之间的强制转换问题,java,spring-boot,stored-procedures,Java,Spring Boot,Stored Procedures,我正在编写一个SpringBoot应用程序,其中我在代码中包含了一个存储过程。我有一个实体类,它有8列,我有一个存储过程,它接受一个参数并从该实体类传回3列。但是,当我调用存储过程时,它抛出一个java.land.ClassCastException。我试图通过向存储过程添加resultlasses来解决这个问题,但是当我运行该代码时,它失败了,因为它说我正在使用所有8个列名。因此,我不确定这是因为存储过程问题,还是因为我在Java代码中实现了错误的存储过程。当我这么说的时候,我的意思是我认为我
java.land.ClassCastException
。我试图通过向存储过程添加resultlasses
来解决这个问题,但是当我运行该代码时,它失败了,因为它说我正在使用所有8个列名。因此,我不确定这是因为存储过程问题,还是因为我在Java代码中实现了错误的存储过程。当我这么说的时候,我的意思是我认为我没有选对
存储过程:
@Entity
@NamedStoredProcedureQueries(value = {
@NamedStoredProcedureQuery(name = "procedure-edit",
procedureName = "GetQueryConf",
resultClasses = AppSelectorTier.class),
@NamedStoredProcedureQuery(name= "procedure-getTierType",
procedureName= "GetTierTypeByObj",
//resultClasses = AppSelectorTier.class,
parameters= {
@StoredProcedureParameter(mode= ParameterMode.IN, name= "taddm_obj", type= String.class),
}),
})
public class AppSelectorTier implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "tiername")
private String tiername;
@Column(name = "system")
private String system;
@Column(name = "mqllisting1")
private String mqllisting1;
@Column(name = "mqllisting2")
private String mqllisting2;
@Column(name = "tagname_one")
private String tagname_one;
@Column(name = "tagname_two")
private String tagname_two;
@Column(name = "parseinstruction")
private String parseinstruction;
@Column(name = "taddmobj")
private String taddmobj;
// Constructor
public AppSelectorTier(String tiername, String system, String mqllisting1, String mqllisting2, String tagname_one,
String tagname_two, String parseinstruction, String taddmobj) {
super();
this.tiername = tiername;
this.system = system;
this.mqllisting1 = mqllisting1;
this.mqllisting2 = mqllisting2;
this.tagname_one = tagname_one;
this.tagname_two = tagname_two;
this.parseinstruction = parseinstruction;
this.taddmobj = taddmobj;
}
public AppSelectorTier(String tiername, String system,String tagname_two) {
super();
this.tiername = tiername;
this.system = system;
this.tagname_two = tagname_two;
}
// Default Constructor
public AppSelectorTier() {
}
// Getters
public String getTiername() {
return tiername;
}
public String getSystem() {
return system;
}
public String getMqllisting1() {
return mqllisting1;
}
public String getMqllisting2() {
return mqllisting2;
}
public String getTagname_one() {
return tagname_one;
}
public String getTagname_two() {
return tagname_two;
}
public String getParseinstruction() {
return parseinstruction;
}
public String getTaddmobj() {
return taddmobj;
}
// Setters
public void setTiername(String tiername) {
this.tiername = tiername;
}
public void setSystem(String system) {
this.system = system;
}
public void setMqllisting1(String mqllisting1) {
this.mqllisting1 = mqllisting1;
}
public void setMqllisting2(String mqllisting2) {
this.mqllisting2 = mqllisting2;
}
public void setTagname_one(String tagname_one) {
this.tagname_one = tagname_one;
}
public void setTagname_two(String tagname_two) {
this.tagname_two = tagname_two;
}
public void setParseinstruction(String parseinstruction) {
this.parseinstruction = parseinstruction;
}
public void setTaddmobj(String taddmobj) {
this.taddmobj = taddmobj;
}
@Override
public String toString() {
return "AppSelectorTier [tiername=" + tiername + ", system=" + system + ", mqllisting1=" + mqllisting1
+ ", mqllisting2=" + mqllisting2 + ", tagname_one=" + tagname_one + ", tagname_two=" + tagname_two
+ ", parseinstruction=" + parseinstruction + ", taddmobj=" + taddmobj + "]";
}
}
@SuppressWarnings("unchecked")
public List<AppSelectorTier> getTierTypeFromObj(String parameter) {
StoredProcedureQuery storedProcedure = entityManager.createNamedStoredProcedureQuery("procedure-getTierType").setParameter("taddm_obj", parameter);
return storedProcedure.getResultList();
}
if (joinQueryService.getTierTypeFromObj("WebService").size() != 0) {
AppSelectorTier selectorObj = joinQueryService.getTierTypeFromObj("WebService").get(0);
System.out.println("Tiername: " + selectorObj.getTiername());
System.out.println("System: " + selectorObj.getSystem());
System.out.println("Tagname two: " + selectorObj.getTagname_two());
current.getQuery();
current.setTier(selectorObj.getTiername());
} else {
temp = "";
current.getQuery();
current.setTier("");
}
java.lang.ClassCastException: java.base/[Ljava.lang.Object; cannot be cast to com.UPS.entity.AppSelectorTier
procedureName=“GetTierTypeByObj”
此过程仅返回tiername、system和标记名_two
服务层:
@Entity
@NamedStoredProcedureQueries(value = {
@NamedStoredProcedureQuery(name = "procedure-edit",
procedureName = "GetQueryConf",
resultClasses = AppSelectorTier.class),
@NamedStoredProcedureQuery(name= "procedure-getTierType",
procedureName= "GetTierTypeByObj",
//resultClasses = AppSelectorTier.class,
parameters= {
@StoredProcedureParameter(mode= ParameterMode.IN, name= "taddm_obj", type= String.class),
}),
})
public class AppSelectorTier implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "tiername")
private String tiername;
@Column(name = "system")
private String system;
@Column(name = "mqllisting1")
private String mqllisting1;
@Column(name = "mqllisting2")
private String mqllisting2;
@Column(name = "tagname_one")
private String tagname_one;
@Column(name = "tagname_two")
private String tagname_two;
@Column(name = "parseinstruction")
private String parseinstruction;
@Column(name = "taddmobj")
private String taddmobj;
// Constructor
public AppSelectorTier(String tiername, String system, String mqllisting1, String mqllisting2, String tagname_one,
String tagname_two, String parseinstruction, String taddmobj) {
super();
this.tiername = tiername;
this.system = system;
this.mqllisting1 = mqllisting1;
this.mqllisting2 = mqllisting2;
this.tagname_one = tagname_one;
this.tagname_two = tagname_two;
this.parseinstruction = parseinstruction;
this.taddmobj = taddmobj;
}
public AppSelectorTier(String tiername, String system,String tagname_two) {
super();
this.tiername = tiername;
this.system = system;
this.tagname_two = tagname_two;
}
// Default Constructor
public AppSelectorTier() {
}
// Getters
public String getTiername() {
return tiername;
}
public String getSystem() {
return system;
}
public String getMqllisting1() {
return mqllisting1;
}
public String getMqllisting2() {
return mqllisting2;
}
public String getTagname_one() {
return tagname_one;
}
public String getTagname_two() {
return tagname_two;
}
public String getParseinstruction() {
return parseinstruction;
}
public String getTaddmobj() {
return taddmobj;
}
// Setters
public void setTiername(String tiername) {
this.tiername = tiername;
}
public void setSystem(String system) {
this.system = system;
}
public void setMqllisting1(String mqllisting1) {
this.mqllisting1 = mqllisting1;
}
public void setMqllisting2(String mqllisting2) {
this.mqllisting2 = mqllisting2;
}
public void setTagname_one(String tagname_one) {
this.tagname_one = tagname_one;
}
public void setTagname_two(String tagname_two) {
this.tagname_two = tagname_two;
}
public void setParseinstruction(String parseinstruction) {
this.parseinstruction = parseinstruction;
}
public void setTaddmobj(String taddmobj) {
this.taddmobj = taddmobj;
}
@Override
public String toString() {
return "AppSelectorTier [tiername=" + tiername + ", system=" + system + ", mqllisting1=" + mqllisting1
+ ", mqllisting2=" + mqllisting2 + ", tagname_one=" + tagname_one + ", tagname_two=" + tagname_two
+ ", parseinstruction=" + parseinstruction + ", taddmobj=" + taddmobj + "]";
}
}
@SuppressWarnings("unchecked")
public List<AppSelectorTier> getTierTypeFromObj(String parameter) {
StoredProcedureQuery storedProcedure = entityManager.createNamedStoredProcedureQuery("procedure-getTierType").setParameter("taddm_obj", parameter);
return storedProcedure.getResultList();
}
if (joinQueryService.getTierTypeFromObj("WebService").size() != 0) {
AppSelectorTier selectorObj = joinQueryService.getTierTypeFromObj("WebService").get(0);
System.out.println("Tiername: " + selectorObj.getTiername());
System.out.println("System: " + selectorObj.getSystem());
System.out.println("Tagname two: " + selectorObj.getTagname_two());
current.getQuery();
current.setTier(selectorObj.getTiername());
} else {
temp = "";
current.getQuery();
current.setTier("");
}
java.lang.ClassCastException: java.base/[Ljava.lang.Object; cannot be cast to com.UPS.entity.AppSelectorTier
错误:
@Entity
@NamedStoredProcedureQueries(value = {
@NamedStoredProcedureQuery(name = "procedure-edit",
procedureName = "GetQueryConf",
resultClasses = AppSelectorTier.class),
@NamedStoredProcedureQuery(name= "procedure-getTierType",
procedureName= "GetTierTypeByObj",
//resultClasses = AppSelectorTier.class,
parameters= {
@StoredProcedureParameter(mode= ParameterMode.IN, name= "taddm_obj", type= String.class),
}),
})
public class AppSelectorTier implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "tiername")
private String tiername;
@Column(name = "system")
private String system;
@Column(name = "mqllisting1")
private String mqllisting1;
@Column(name = "mqllisting2")
private String mqllisting2;
@Column(name = "tagname_one")
private String tagname_one;
@Column(name = "tagname_two")
private String tagname_two;
@Column(name = "parseinstruction")
private String parseinstruction;
@Column(name = "taddmobj")
private String taddmobj;
// Constructor
public AppSelectorTier(String tiername, String system, String mqllisting1, String mqllisting2, String tagname_one,
String tagname_two, String parseinstruction, String taddmobj) {
super();
this.tiername = tiername;
this.system = system;
this.mqllisting1 = mqllisting1;
this.mqllisting2 = mqllisting2;
this.tagname_one = tagname_one;
this.tagname_two = tagname_two;
this.parseinstruction = parseinstruction;
this.taddmobj = taddmobj;
}
public AppSelectorTier(String tiername, String system,String tagname_two) {
super();
this.tiername = tiername;
this.system = system;
this.tagname_two = tagname_two;
}
// Default Constructor
public AppSelectorTier() {
}
// Getters
public String getTiername() {
return tiername;
}
public String getSystem() {
return system;
}
public String getMqllisting1() {
return mqllisting1;
}
public String getMqllisting2() {
return mqllisting2;
}
public String getTagname_one() {
return tagname_one;
}
public String getTagname_two() {
return tagname_two;
}
public String getParseinstruction() {
return parseinstruction;
}
public String getTaddmobj() {
return taddmobj;
}
// Setters
public void setTiername(String tiername) {
this.tiername = tiername;
}
public void setSystem(String system) {
this.system = system;
}
public void setMqllisting1(String mqllisting1) {
this.mqllisting1 = mqllisting1;
}
public void setMqllisting2(String mqllisting2) {
this.mqllisting2 = mqllisting2;
}
public void setTagname_one(String tagname_one) {
this.tagname_one = tagname_one;
}
public void setTagname_two(String tagname_two) {
this.tagname_two = tagname_two;
}
public void setParseinstruction(String parseinstruction) {
this.parseinstruction = parseinstruction;
}
public void setTaddmobj(String taddmobj) {
this.taddmobj = taddmobj;
}
@Override
public String toString() {
return "AppSelectorTier [tiername=" + tiername + ", system=" + system + ", mqllisting1=" + mqllisting1
+ ", mqllisting2=" + mqllisting2 + ", tagname_one=" + tagname_one + ", tagname_two=" + tagname_two
+ ", parseinstruction=" + parseinstruction + ", taddmobj=" + taddmobj + "]";
}
}
@SuppressWarnings("unchecked")
public List<AppSelectorTier> getTierTypeFromObj(String parameter) {
StoredProcedureQuery storedProcedure = entityManager.createNamedStoredProcedureQuery("procedure-getTierType").setParameter("taddm_obj", parameter);
return storedProcedure.getResultList();
}
if (joinQueryService.getTierTypeFromObj("WebService").size() != 0) {
AppSelectorTier selectorObj = joinQueryService.getTierTypeFromObj("WebService").get(0);
System.out.println("Tiername: " + selectorObj.getTiername());
System.out.println("System: " + selectorObj.getSystem());
System.out.println("Tagname two: " + selectorObj.getTagname_two());
current.getQuery();
current.setTier(selectorObj.getTiername());
} else {
temp = "";
current.getQuery();
current.setTier("");
}
java.lang.ClassCastException: java.base/[Ljava.lang.Object; cannot be cast to com.UPS.entity.AppSelectorTier
您可能错过了以下内容:
//resultClasses = AppSelectorTier.class
尝试取消注释。
如果未指定类,将返回对象类型。
设置:
//resultClasses=AppSelectorTier.classI取消了注释,现在它显示,
mqllisting1
是无效列。请检查此项: