Spring Data JPA @SqlResultSetMapping в макросе Teradata - PullRequest
0 голосов
/ 17 декабря 2018

У меня проблема с отображением макроса в JPA, я исключение, так как не могу найти набор результатов.

Объект:

@Entity
@Table(catalog = "EXPLOTACION")
@SqlResultSetMapping(
    name="posicionConsolidad",
    classes={
        @ConstructorResult(
             targetClass=TestEntity.class,
             columns={
                 @ColumnResult(name="orden", type=Long.class),
                 @ColumnResult(name="party_id", type=Long.class),
                 @ColumnResult(name="agrupador0", type=String.class),
                 @ColumnResult(name="agrupador1", type=String.class),
                 @ColumnResult(name="agrupador2", type=String.class),
                 @ColumnResult(name="total_pesos", type=Long.class),
                 @ColumnResult(name="total_dolares", type=Long.class),
                 @ColumnResult(name="total_pesificado", type=Long.class),
                 @ColumnResult(name="subtotal_moneda_origen", type=Long.class),
                 @ColumnResult(name="nro_cuenta", type=String.class),
                 @ColumnResult(name="saldo_moneda_origen", type=Long.class),
                 @ColumnResult(name="currency_code", type=Integer.class)
            }
        )
    }
)
@NamedNativeQuery(name="getPosicionConsolidada", query="EXECUTE REDUCIDAS_EXPLO.INS_TAX_TENENCIAS_CUENTAS(:fecha, :partyId)", resultSetMapping="posicionConsolidad")
public class TestEntity {

    @Id
    private Long orden;
    private Long idParty;
    private String agrupador0;
    private String agrupador1;
    private String agrupador2;
    private Long totalPesos;
    private Long totalDolares;
    private Long totalPesificado;
    private Long subtotalMonedaOrigen;
    private String nroCuenta;
    private Long saldoMonedaOrigen;
    private Integer currencyCode;

*Constructors getters/setters

Хранилище:

public interface TestRepository extends JpaRepository<TestEntity, Long>{

    @Query(name="getPosicionConsolidada", nativeQuery = true)
    TestEntity getIdParty(@Param("fecha") String fecha, @Param("partyId") Integer partyId);
}

Служба:

@Service("testServices")
@Transactional
public class TestService {

    @Autowired
    TestRepository testRepository;

    public TestEntity getPartyId(String fecha, Integer partyId) {
        return testRepository.getIdParty(fecha, partyId);
    }
}

Вызов

TestEntity test = testService.getPartyId("'2018-10-31'", 1017150);

Исключение:

Hibernate: EXECUTE REDUCIDAS_EXPLO.INS_TAX_TENENCIAS_CUENTAS(?, ?)
org.springframework.orm.jpa.JpaSystemException: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet
...
Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet
...
Caused by: java.sql.SQLException: [Teradata JDBC Driver] [TeraJDBC 16.20.00.10] [Error 1077] [SQLState HY000] executeQuery() cannot be used when there is no result set expected; use executeUpdate() or execute()

ResultSet:

ResultSet

Я думаю, вы не можете рассматривать макрос как процедуру с JPA, и я не могу найти в Интернете реализацию JPA для MACRO в Teradata.

Спасибо.

...