So debuggen Sie eine SP-Antwort in Quarkus mit EntityManagerJava

Java-Forum
Guest
 So debuggen Sie eine SP-Antwort in Quarkus mit EntityManager

Post by Guest »

Guten Tag, ich baue gerade einen Microservice auf, der den Aufruf einer SP (Stored Procedure) in Quarkus mithilfe von EntityManager und StoredProcedureQuery ausführt. Das Problem ist, dass ich Probleme beim Zuordnen habe, was die DB zurückgibt, es gibt Unterschiede (dort sind Datensätze, die doppelt zurückgegeben werden, weil sie denselben Primärschlüssel haben, der Rest der Daten ändert sich jedoch) im Hinblick darauf, was der SP zurückgibt, wenn er ihn manuell ausführt, mit dem, was zurückgegeben wird, wenn er der Liste in Java zugeordnet wird, also würde ich es tun gerne Ich weiß, wie ich von IntellijIdea aus debuggen kann, was die Datenbank zurückgibt, und weiß, warum die Daten dupliziert werden, oder ob Sie mir Ideen geben können, warum sie dupliziert werden könnten.
Ich füge den Hauptteil hinzu Klassen, die ich verwende
Entity

Code: Select all

package com.tmve.account.beans;

import lombok.Getter;
import lombok.ToString;

import javax.persistence.*;
import java.io.Serializable;
import java.sql.Date;

@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(
name = PostpaidAccount.NAME_QUERY_BUSCAR_CUENTAS_ROLES_X_DOC_IDE,
procedureName = "PERS.PKG_COMP_CUENTAS.BUSCAR_CUENTAS_ROLES_X_DOC_ID",
resultClasses = {PostpaidAccount.class},
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, type = String.class),
@StoredProcedureParameter(mode = ParameterMode.IN, type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, type = void.class),
})
})
@Getter
@Entity
@ToString
public class PostpaidAccount implements Serializable {

public static final String NAME_QUERY_BUSCAR_CUENTAS_ROLES_X_DOC_IDE=  "BuscarCuentasRolesxDocId";
private static final long serialVersionUID = 1L;

@Id
@Column(name = "V_NUMERO_CUENTA")
Long account;
@Column(name = "V_NUM_CTA_PAGADORA")
Long billingAccountNumber;
@Column(name = "V_NUM_CTA_DIG_VERI")
Long billingAccountNumberValidators;
@Column(name = "V_TIPO_CUENTA")
String accountType;
@Column(name = "V_ESTADO")
String accountStatus;
@Column(name = "V_NOMBRE_ESTADO")
String accountStatusDescription;
@Column(name = "V_ID_PRODUCTO")
Integer productoId;
@Column(name = "NOMBRE_PRODUCTO")
String productName;
@Column(name = "FECHA_INICIO_PROD")
Date customerSince;
@Column(name = "NOMBRES")
String accountHolder;
@Column(name = "V_TIPO_RELACION")
String relationshipType;
@Column(name = "V_PLATAF")
int platformId;
@Column(name = "V_IDENTIFICADOR")
String identifier;
@Column(name = "NOMBRE_AREA")
String marketName;
}
Repoository
In diesem Kurs möchte ich wissen, was ich implementieren kann oder wie ich die Datenbank debuggen kann Gibt zurück, sobald die folgende Zeile ausgeführt wird:
storedProcedureQuery.execute();

Code: Select all

package com.tmve.account.repositoty.impl;

import com.tmve.account.beans.PostpaidAccount;
import com.tmve.account.repositoty.IFindPostpaidAccountByDocumentRepository;
import lombok.extern.slf4j.Slf4j;

import javax.inject.Inject;
import javax.inject.Singleton;
import javax.persistence.EntityManager;
import javax.persistence.StoredProcedureQuery;
import java.util.List;

@Slf4j
@Singleton
public class FindPostpaidAccountByDocumentRepository implements IFindPostpaidAccountByDocumentRepository {

@Inject
EntityManager entityManager;

@Override
public List
 getPostpaidAccount(String documentType, String documentNumber) {

StoredProcedureQuery storedProcedureQuery=entityManager
.createNamedStoredProcedureQuery("BuscarCuentasRolesxDocId");
storedProcedureQuery.setParameter(1,documentNumber);
storedProcedureQuery.setParameter(2,Integer.parseInt(documentType));

storedProcedureQuery.execute();
List result= storedProcedureQuery.getResultList();
return result;

}
}
So werden Protokolle beim Debuggen in IntelliJ angezeigt. Idee:
[img]https:/ /i.sstatic.net/wneXvLY8.png[/img]

Und je nachdem, was die Datenbank zurückgibt, sollten die Datensätze so aussehen:
Image

Wie wir sehen können, werden die Datensätze dupliziert und ich verstehe nicht warum. Könnte es etwas mit dem Ansatz der Verwendung des EntityManagers zu tun haben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post