Я использую Hibernate JPA и Spring с базой данных Mysql, и я хочу вставить с помощью оператора SQL, например:
Date saveDate = new Date();
java.sql.Timestamp timeStampDate = new Timestamp(saveDate.getTime());
Query persistableQuery = entityManager.createNativeQuery("INSERT INTO TASK_ASSESSMENT (ACTIVE_FLAG, ASSESSMENT_DATE, DESCRIPTION, "
+ "TITLE, NEEDS_LEVEL_ID, PATIENT_ID, USER_ID) VALUES ("
+ true +", " + timeStampDate + ", " + description + ", " + title + ", "
+ needsLevelId + ", " + patientId + ", " + userId + " )");
persistableQuery.executeUpdate();
Но после запуска я получаю следующую ошибку:
WARN : org.hibernate.util.JDBCExceptionReporter - SQL Error: -11, SQLState: 37000
ERROR: org.hibernate.util.JDBCExceptionReporter - Unexpected token: 15 in statement
[INSERT INTO TASK_ASSESSMENT (ACTIVE_FLAG, ASSESSMENT_DATE, DESCRIPTION, TITLE,
NEEDS_LEVEL_ID, PATIENT_ID, USER_ID)
VALUES (true, 2011-03-01 15?, any description, , 193, 1, 3 )]
Может ли кто-нибудь помочь мне в этом, пожалуйста?
PS. Я знаю об использовании гибернации не родным способом, но мне нужно использовать нативный способ. Я тоже из ... от ... но не думаю, что это поможет.
Наконец, я думаю, что проблема в основном с датой. Как вы, ребята, передаете MySQL тип datetime
с использованием Java?
Обновление:
Следующее работает нормально, я полагаю, что это проблема преобразования даты и времени в mysql из java.
("INSERT INTO TASK_ASSESSMENT "
+ "(ACTIVE_FLAG, ASSESSMENT_DATE, DESCRIPTION, TITLE, "
+ "NEEDS_LEVEL_ID, PATIENT_ID, USER_ID) "
+ "VALUES (true, 1999-12-22, '" + description + "', '"
+ title + "', " + needsLevelId+", " + patientId
+ ", " + userId + ")");
Может кто-нибудь помочь мне, как конвертировать java.util.Date
в MySQL datetime
?