0
I’m having a problem with a Trigger created in SQL SERVER. When I insert the data into the table that starts Trigger directly in SQL SERVER Trigger works normal, however when performed insertion by JPA it presents an error and the rollback.
Follow the error:
[EL Warning]: 2016-06-18 12:29:39.144--UnitOfWork(2039736611)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Um conjunto de resultados foi gerado para atualização.
Error Code: 0
Call: INSERT INTO EMPRESTIMO (DATAEMPRESTIMO, EMPRESTIMOMAISTAXA, LIMITEPARCELA, NUMEROPARCELA, NUMEROPARCELAMINIMA, PARCELAMAXIMA, PRIMEIRAPARCELA, SALARIOLIQUIDO, TAXAJUROS, VALOREMPRESTIMO, VALORJUROS, VALORPARCELA, CLIENTE_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    bind => [13 parameters bound]
Query: InsertObjectQuery(JPA.EmprestimoPOJO@64d8f425)
javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Um conjunto de resultados foi gerado para atualização.
Error Code: 0
Call: INSERT INTO EMPRESTIMO (DATAEMPRESTIMO, EMPRESTIMOMAISTAXA, LIMITEPARCELA, NUMEROPARCELA, NUMEROPARCELAMINIMA, PARCELAMAXIMA, PRIMEIRAPARCELA, SALARIOLIQUIDO, TAXAJUROS, VALOREMPRESTIMO, VALORJUROS, VALORPARCELA, CLIENTE_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    bind => [13 parameters bound]
Query: InsertObjectQuery(JPA.EmprestimoPOJO@64d8f425)
Erro ao gravar no banco de dados
TRIGGER:
CREATE TRIGGER TRG_PARCELAS 
ON EMPRESTIMO
AFTER INSERT
AS
    --valor a serem inseridos na inserted
    DECLARE @PG         BIT
    DECLARE @VLR        FLOAT
    DECLARE @VCM        DATE
    DECLARE @IDEMPR     INT
    DECLARE @NPARCELA   INT
    DECLARE @AUX        INT
BEGIN
    --Pega valores da linha inserida de emprestimo
    SELECT  @VLR = VALORPARCELA, @VCM = PRIMEIRAPARCELA, @IDEMPR = ID, @NPARCELA = NUMEROPARCELA
    FROM INSERTED
    --Set AUX como 0
    SET @AUX = 0
    SET @PG = 0
    WHILE @AUX < @NPARCELA BEGIN
        Select DateAdd(month, @AUX, @VCM)
        INSERT INTO PARCELA (PAGO, VALOR, VENCIMENTO, EMPRESTIMO_ID) 
        VALUES (0, @VLR, @VCM, @IDEMPR)
        SET @AUX = @AUX + 1
        END
END
Someone’s had the same problem?
I’m not sure, but by this line of error Internal Exception: com.microsoft.sqlserver.jdbc.Sqlserverexception: A set of results was generated for update. Try replacing Trigger’s select by set.
– Krismorte