Исправить хранимую процедуру Java, передавать значение в и получать список - PullRequest
0 голосов
/ 26 февраля 2020

Я пишу простое приложение 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...