Как исправить ошибку сохранения данных в базу данных с помощью спящего режима в mssql - PullRequest
0 голосов
/ 23 января 2019

очень новый для стека Java / Spring / Hibernate.Я не могу получить данные, извлеченные из таблицы xlsx, используя apache poi для сохранения в базе данных mssql.Используя базу данных в памяти, Derby, все это прекрасно работает, и я полагаю, что это как-то связано с отображением данных между классом java и таблицей базы данных mssql.

DB:

CREATE TABLE BASICS.IncomingData.BulkRefundUpload (
      id int PRIMARY KEY,
      daxPaymentReference varchar(255),
      amount float,
      refundReason varchar(255),
      invoiceId varchar(255),
      processingStatus varchar(255),
      retryCount int,
      iglobisRequest varchar(255),
      iglobisResponse varchar(255),
      refundStatus varchar(255),
      createDateTime date,
      createdBy varchar(255),
      updateDateTime date,
      modifiedBy varchar(255)
)

Класс:

// omitted imports

@Entity
@Table(name = "IncomingData.BulkRefundUpload")
public class Refund {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private int id;

    @Column
    private String daxPaymentReference;

    @Column
    private double amount;

    @Column
    private String refundReason;

    @Column
    private String invoiceId;

    @Column
    private String processingStatus;

    @Column
    private int retryCount;

    @Column
    private String iglobisRequest;

    @Column
    private String iglobisResponse;

    @Column
    private String refundStatus;

    @Column
    @CreationTimestamp
    private Date createDateTime;

    @Column
    private String createdBy;

    @Column
    @UpdateTimestamp
    private Date updateDateTime;

    @Column
    private String modifiedBy;

    // no arg constructor
    public Refund() {}

    // regular constructor
    public Refund(String daxPaymentReference, double amount, String refundReason, String invoiceId, String processingStatus, int retryCount, String iglobisRequest, String iglobisResponse, String refundStatus, String createdBy, String modifiedBy) {
        super();
        this.daxPaymentReference = daxPaymentReference;
        this.amount = amount;
        this.refundReason = refundReason;
        this.invoiceId = invoiceId;
        this.processingStatus = processingStatus;
        this.retryCount = retryCount;
        this.iglobisRequest = iglobisRequest;
        this.iglobisResponse = iglobisResponse;
        this.refundStatus = refundStatus;
        this.createdBy = createdBy;
        this.modifiedBy = modifiedBy;
    }

    // getters and setters omitted
}

И метод, пытающийся записать данные, перебирает строки в xlsx:

List<Refund> refunds = new ArrayList<>();

            sheet.rowIterator().forEachRemaining(row -> {

                if(row.getRowNum() != 0) {

                    refunds.add(new Refund(
                            row.getCell(0).getStringCellValue(), //daxPaymentReference
                            row.getCell(1).getNumericCellValue(), //amount
                            row.getCell(2).getStringCellValue(), //refundReason
                            "",
                            "new",
                            0,
                            "",
                            "",
                            "",
                            "defaultCreatedByUser",
                            ""
                    ));
                }
            });

И, наконец, ошибка:

Hibernate: select next value for hibernate_sequence
2019-01-23 13:58:04.260  WARN 1544 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 102, SQLState: S0001
2019-01-23 13:58:04.260 ERROR 1544 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : Incorrect syntax near 'hibernate_sequence'.
2019-01-23 13:58:04.315 ERROR 1544 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'hibernate_sequence'.

Добавление изображения из отладчика с указанием значений, добавляемых в объект возврата: enter image description here

...