В существующем приложении Java EE существует объект JPA, который содержит строковый массив в качестве поля. Плохо, но это то, что есть. Для этого нет никаких аннотаций и выполнения результатов приложения в Hibernate (на JBoss EAP 6.1 Alpha и MySQL 5.6), хранящем его как TINYBLOB
. Это явно не удается, как только массив строк содержит больше, чем пару значений, но все же он отлично работает, пока массив не слишком большой.Форсировать тип поля сущности JPA для BLOB
Можно ли каким-либо образом заставить через JPA 2 (не спящий режим!) Аннотацию, что поле рассматривается как BLOB вместо TINYBLOB
?
Следующая команда фактически создать столбец типа BLOB
во время установки, но при попытке сохранить экземпляр сущности он все еще терпит неудачу с
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String"
поля определения аннотаций:
@Lob
@Column(columnDefinition = "blob")
Вы должны удалить '@ column' аннотации или вместо этого вы должны имеют '@Column (columnDefinition =" clob ")', так как вы хотите [строку большого символа переменной длины] (http://docs.oracle.com/cd/E35137_01/doc.32/e18460/oracle_db2_compared. HTM # RPTID114). – aribeiro
@aribeiro, но я не могу - тогда все мои существующие записи сломаны. – Marco
. А как насчет создания нового поля, аннотированного с помощью '@Column (columnDefinition =" clob ")', который используется постепенно с этого момента, а другой - как «@ Устаревший»? Вы можете изменить свой код, чтобы все обновления и новые вставки ссылались на новое поле, и тогда наступит точка, где можно безопасно удалить поле 'blob'. – aribeiro