首页 > 解决方案 > Spring mvc:eclipse链接:尝试从“DATE”类型的数据值中获取“VARBINARY”类型的数据值

问题描述

我正在尝试在 Derby DB 中存储启动等内容。启动有一个日期,每当我尝试在数据库中插入启动时,我都会收到此错误

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.4.qualifier): org.eclipse.persistence.exceptions.DatabaseException
        Internal Exception: java.sql.SQLDataException: An attempt was made to get a data value of type 'VARBINARY' from a data value of type 'DATE'.
        Error Code: 20000
        Call: INSERT INTO LAUNCH (ID, CUSTOMER, DATE, DETAILS, LANDINGATTEMPT, LINKTOMISSIONPATCH, NAME, ORBIT, PAYLOADNAMES, PAYLOADTYPES, TIME, LAUNCHPAD_ID, ROCKET_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        bind => [13 parameters bound]
        Query: InsertObjectQuery(domain.Launch@4027c222)

虽然我指定这是一个日期

@Column(columnDefinition = "date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date;

我从一个休息 api 获得启动,这就是我存储它们的方式,但我很确定这不是问题,因为当我尝试手动插入启动时我也会收到错误。

        transaction.begin();
        try {
            for (Launch launch : launchRestApi.getAllLaunches()) {
                entityManager.persist(launch);
            }
            transaction.commit();
        } catch(Exception e) {
            transaction.rollback();
        }

当我在我的机器上使用 Derby 服务器时,它确实可以工作并且我没有收到任何错误。当我使用 IntelliJ 连接到远程数据库时,它还说 DATE 列存储为DATE(10),所以我真的不知道是什么原因造成的。

标签: javaspring-mvceclipselinkderby

解决方案


推荐阅读