Код: Выделить всё
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at java.base/java.util.Arrays.copyOf(Arrays.java:3745 undefined)
at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:169 undefined)
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:772 undefined)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:248 undefined)
at java.base/java.util.Arrays.toString(Arrays.java:4988 undefined)
at org.hibernate.type.descriptor.java.PrimitiveByteArrayTypeDescriptor.extractLoggableRepresentation(PrimitiveByteArrayTypeDescriptor.java:63 undefined)
at org.hibernate.type.descriptor.java.PrimitiveByteArrayTypeDescriptor.extractLoggableRepresentation(PrimitiveByteArrayTypeDescriptor.java:26 undefined)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:70 undefined)
at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$1.bind(AttributeConverterSqlTypeDescriptorAdapter.java:88 undefined)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280 undefined)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275 undefined)
at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:39 undefined)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2879 undefined)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3176 undefined)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3699 undefined)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:90 undefined)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604 undefined)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478 undefined)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356 undefined)
at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:50 undefined)
at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1418 undefined)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1504 undefined)
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1561 undefined)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1529 undefined)
at org.hibernate.query.Query.getResultList(Query.java:168 undefined)
at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:76 undefined)
Код: Выделить всё
`@Table(name = "FILE_DATA")
public class FileData
{
@Id
@Column(name= "ID")
private Long id;
@Convert(converter = CustomArrayCompressionConverter.class)
@Column(name = "CONTENT")
private byte[] content;
}
`
Код: Выделить всё
TABLE [FILE_DATA] -
[ID] [numeric](10) NOT NULL PRIMARY KEY,
Код: Выделить всё
[CONTENT] [varbinary](max) NOT NULL
Код: Выделить всё
org.hibernate.type.descriptor.java.PrimitiveByteArrayTypeDescriptor.extractLoggableRepresentation(PrimitiveByteArrayTypeDescriptor.java:63)
Here the huge byte array is being converted to String. So i need to exclude this from logging
Я пробовал использовать фильтр регулярных выражений в свойствах Log4j, он исключает массив байтов из файла журнала, но все равно преобразует этот массив байтов в строку.Мне нужно опустить этот массив байтов или дать собственное имя, например «Регистрация огромного массива» при регистрации массива байтов
Я видел решение, использующее пользовательский тип UserType в значениях трассировки Hibernate параметров оператора, кроме больших двоичных объектов
Его нельзя использовать, поскольку я использую собственный AttributeConverter (CustomArrayCompressionConverter — для сжатия и распаковки перед вставкой в базу данных)
Есть ли другой подход к достижению это
Подробнее здесь: https://stackoverflow.com/questions/790 ... ile-saving