LocalDate вызывает усечение данных: неверное значение даты - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать приложение, которое обрабатывает вводимые пользователем данные с разными типами данных, используя mysql и jpa. Когда я запускаю приложение, я получаю сообщение об ошибке «MysqlDataTruncation: усечение данных: неверное значение даты:». Мне действительно нужна помощь в решении этой проблемы, и я уже сделал некоторые исследования, но я не смог понять это. Я использую тип Date в mysql и тип LocalDate для моего класса сущности. Возможно ли это?

Это мой первый класс сущностей:

      @Entity
      @Table(name = "flight")
      public class Flight implements Serializable {

     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
       private Integer flightId;
       private String flightName;
       private String Name;
       private LocalDate firstDate;
       private LocalDate lastDate;

Класс бронирования:

       @Entity
       @Table(name="booking")
       public class Booking implements Serializable {

       @Id
       @GeneratedValue(strategy = GenerationType.AUTO)
       private Integer reservationId;
       private String hotelRoomType;
       private double totalAmount;

Таблицы базы данных:

    CREATE TABLE `flight` (
    `flightId` int NOT NULL AUTO_INCREMENT,
    `flightName` varchar(50) DEFAULT NULL,
    `Name` varchar(50) DEFAULT NULL,
    `firstDate` date NOT NULL,
    `lastDate` date NOT NULL,

Таблица бронирования:

 CREATE TABLE `booking` (
`reservationId` int NOT NULL,
`hotelRoomType` varchar(30) NOT NULL,
 `totalAmount` decimal(10,2) NOT NULL  

)

Сообщение об ошибке: Исключение

        org.springframework.web.util.NestedServletException: Request processing failed; nested 
        exception is javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse 
        Persistence Services - 2.5.2.v20140319-9ad6abd): 
        org.eclipse.persistence.exceptions.DatabaseException
        Internal Exception: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: 
        Incorrect date value:
        '\xAC\xED\x00\x05sr\x00\x0Djava.time.
        Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x07\x03\x00\x00\x07\xE4\x03\x12x' for column 
       'lastDate' at row 1

Код ошибки: 1292

       Call: INSERT INTO flight (FLIGHTID, FLIGHTNAME,LASTDATE, NAME, FIRSTDATE) VALUES (?, ?, ?, ?, ?, ?)
       bind => [5 parameters bound]
       Query: InsertObjectQuery(com.springmvc.jpa.booking.Flight@f0670cc)
       org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
       org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
       org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
       org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Причина :

       javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence 
       Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
       Internal Exception: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: 
       Incorrect date value: 
       '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser
        \x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x07\x03\x00\x00\x07\xE4\x03\x12x' 
       for column 'lastDate' at row 1

Код ошибки: 1292

       Call: INSERT INTO flight (FLIGHTEID, FLIGHTNAME, LASTDATE, FLIGHTNAME, 
       FIRSTDATE) VALUES (?, ?, 
      ?, ?, ?, ?)
      bind => [5 parameters bound]

Это изображение показывает доступную EclipseLink:

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Я решил проблему, добавив эту зависимость:

         <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-java8 -->
        <dependency>
           <groupId>org.hibernate</groupId>
             <artifactId>hibernate-java8</artifactId>
             <version>5.4.6.Final</version>
        </dependency> 
0 голосов
/ 16 марта 2020

Согласно вашим журналам вы используете EclipseLink 2.5, то есть эталонную реализацию (RI) JPA 2.1 (https://www.eclipse.org/eclipselink/releases/2.5.php)

Поддержка для LocalDate и других Java 8 временных классов, добавленных в JPA 2.2.

Вам следует обновить EclipseLink 2.7, который является RI JPA 2.2

...