Я пишу простое приложение Java, которое передает параметр в хранимую процедуру. Хранимая процедура выполняет вычисление и возвращает три столбца, в которых этот параметр передан в совпадениях. Я хотел бы взять три переданных столбца и передать их моему контроллеру Java в виде списка.
Однако я создал класс Java и передал его обратно, и он говорит, что не может привести его к желаемому классу. Я прочитал документацию и знаю, что вызов хранимой процедуры принимает класс результата, чтобы он знал, как передать значения обратно. Хотя, похоже, это не сработает, даже если бы я добавил его к вызову параметра.
Таким образом, код завершается ошибкой на System.out.println(myStringAry.get(0).getTiername());
этой точке, и я не совсем понимаю, почему.
Java Уровень обслуживания:
@SuppressWarnings("unchecked")
public List<AppSelectorTier> getTierTypeFromObj(String parameter) {
StoredProcedureQuery storedProcedure = entityManager.createNamedStoredProcedureQuery("procedure-getTierType").setParameter("taddm_obj", parameter);
return storedProcedure.getResultList();
}
Java Класс:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedStoredProcedureQueries;
import javax.persistence.NamedStoredProcedureQuery;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureParameter;
@Entity
@NamedStoredProcedureQueries(value = {
@NamedStoredProcedureQuery(name = "procedure-edit", procedureName = "GetQueryConf", resultClasses = AppSelectorTier.class),
@NamedStoredProcedureQuery(name= "procedure-getTierType", procedureName= "GetTierTypeByObj", 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;
// Constructor
public AppSelectorTier(String tiername, String system, String mqllisting1, String mqllisting2, String tagname_one,
String tagname_two) {
super();
this.tiername = tiername;
this.system = system;
this.mqllisting1 = mqllisting1;
this.mqllisting2 = mqllisting2;
this.tagname_one = tagname_one;
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;
}
// 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;
}
}
Контроллер:
List<AppSelectorTier> myStringAry = new ArrayList<AppSelectorTier>();
myStringAry = joinQueryService.getTierTypeFromObj("ExampleText");
System.out.println("Size of List: " + myStringAry.size());
System.out.println(myStringAry.get(0).getTiername());