Что означает этот отказ JPA? «Код ошибки: 0 Вызов: ВСТАВИТЬ В таблицу (столбец) ЗНАЧЕНИЯ (?)»

Я использую JPA для сохранения POJO в таблице MSSQL. У меня исключение. На EntityManager.persist(pojo); это происходит в следующей функции:

private static void runTransaction(String name) {
    // Create the EntityManager
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("aeosclientPU");
    EntityManager em = factory.createEntityManager();
    em.getTransaction().begin();
    Tst tst = new Tst();
    tst.setName(name);
    tst.setId(1);       //I commented out this line, but get the same exception with id=null
    em.persist(tst);    //here Exception
    em.flush();                     
    em.getTransaction().commit();   
    em.close();
    factory.close();
    System.out.println("FERTIG");
}

Exception in thread "main" javax.persistence.PersistenceException: Exception 
[EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): 
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.DataTruncation: Data truncation
Error Code: 0
Call: INSERT INTO tst (name) VALUES (?)
    bind => [1 parameter bound]
Query: InsertObjectQuery(aeospojo.Tst[ id=1 ])
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:868)
at Test.TestTst.runTransaction(TestTst.java:38)
at Test.TestTst.run(TestTst.java:26)
at aeosclient.Aeosmain.main(Aeosmain.java:10)
...

Tst - это POJO, класс сущности из таблицы MSSQL "tst", которую я создал ранее. Таблица tst выглядит так: Что означает этот отказ JPA? «Код ошибки: 0 Вызов: ВСТАВИТЬ В таблицу (столбец) ЗНАЧЕНИЯ (?)»

Что означает указанное выше исключение и как его исправить?

«java.sql.DataTruncation: усечение данных» - вы вставляете данные, размер которых превышает размер столбца базы данных. Имя - слишком длинная строка. Какой размер «имени» вам нужно поддерживать? Вам следует увеличить столбец имени в базе данных с 10 до максимального размера, который вам нужен, и добавить проверку, чтобы в будущем вы не пытались вставлять значения, превышающие это.

Chris 24.09.2018 19:05

Спасибо, Крис. Ваше предложение решает проблему.

Dan 25.09.2018 09:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
153
0

Другие вопросы по теме