Вставка с собственным запросом Hibernate не работает для java.util.Date

Я использую 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. Я знаю, что спящий режим используется неродным способом, но мне нужно использовать нативный способ. Я также использую insert ... from ..., но я не думаю, что это поможет.

Наконец, я думаю, что проблема в основном в дате. Как вы, ребята, передаете MySQL тип datetime , используя Java?

Обновление:

Следующее работает нормально, я предполагаю, что это проблема преобразования даты Java в дату и время MySQL.

("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 ?

5
задан krlzlx 8 November 2016 в 13:25
поделиться