Я пытаюсь, среди прочего, сохранить запуски в базе данных Derby.
Дата запуска имеет дату, и всякий раз, когда я пытаюсь вставить запуск в базу данных, я получаю эту ошибку
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)
, поэтому я действительно понятия не имею, что его вызывает.