2017-02-15 18 views
0

Когда я вызываю Session.persist, передавая объект сущности, у которого есть свойство String с несколькими вопросительными знаками, я получаю исключение, показанное ниже.Hibernate Exception во время Session.persist, когда поле String содержит вопросительные знаки

Исключение похоже на то, что спящий режим использует вопросительные знаки в качестве заполнителей значений в подготовленных операциях.

Может кто-нибудь знает, как работать вокруг этой проблемы?

Вот строковое представление объекта, который вызывает исключение:

WcmsPart [MPN = 04EAC2 ??? 16-001, КПН = нуль, описание = PRIMER полиуретановых, количество = 1, ...]

И ниже является исключением. Цените свои предложения

Exception: org.hibernate.exception.ConstraintViolationException: could not execute statement 

Stack Trace: 
org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:129) 
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) 
org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:211) 
org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:62) 
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3124) 
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581) 
org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:104) 
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:465) 
org.hibernate.engine.spi.ActionQueue.executeInserts(ActionQueue.java:337) 
org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:176) 
org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:216) 
org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:334) 
org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289) 
org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195) 
org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126) 
org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:206) 
org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:149) 
org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75) 
org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811) 
org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784) 
org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789) 
+0

, пожалуйста, прикрепите запрос, который вы вызываете .. со всеми параметрами –

+0

Я просто называю 'session.persist (wcmsPart);' –

ответ

0

Вопросительный знак должен быть параметром в Hibernate/SQL. Поэтому вам нужно сбежать от него, прежде чем продолжать свои данные

+0

Спасибо! Любая идея, как мне избежать этой строки '04EAC2 ??? 16-001? –

+0

A replaceAll на строке поможет – DamCx