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;
}
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;
}
}
[img]https:/ /i.sstatic.net/wneXvLY8.png[/img]
Und je nachdem, was die Datenbank zurückgibt, sollten die Datensätze so aussehen:

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?