Javax persistence persistenceexception error attempting to apply attributeconverter

JBossDeveloper I want to load some configurable data from database when my application startup, so i use . javax.enterprise.inject.spi.Extension When i use AttributeConverter with JPA, i got the following exception Caused by: javax.persistence.PersistenceException: Error attempting to apply AttributeConverter at com.me.ta.foundation.service.info.base.impl.JPAAgioLimitService$Proxy$_$$_WeldClientProxy.load(Unknown Source) at com.me.ta.foundation.service.info.CachedInfoImpl$Proxy$_$$_WeldClientProxy.load(Unknown Source) Caused by: java.lang.IllegalStateException: org.hibernate.resource.beans.container.internal.NotYetReadyException: CDI BeanManager not (yet) ready to […]

Содержание

  1. JBossDeveloper
  2. Error Attempting to Apply Attribute Converter
  3. Comments
  4. Latest
  5. Unanswered
  6. Popular
  7. Get updates from the worldwide Bonita Community!
  8. Как сохранить свойство типа List в JPA?
  9. 10 ответов:
  10. Ошибка при попытке применить AttributeConverter
  11. 1 ответ
  12. Похожие вопросы:
  13. Импорт javax.persistence невозможен.
  14. ОТВЕТЫ
  15. Ответ 1
  16. Ответ 2
  17. Ответ 3
  18. Ответ 4
  19. Ответ 5
  20. Ответ 6
  21. Ответ 7

JBossDeveloper

I want to load some configurable data from database when my application startup, so i use . javax.enterprise.inject.spi.Extension

When i use AttributeConverter with JPA, i got the following exception

Caused by: javax.persistence.PersistenceException: Error attempting to apply AttributeConverter

at com.me.ta.foundation.service.info.base.impl.JPAAgioLimitService$Proxy$_$$_WeldClientProxy.load(Unknown Source)

at com.me.ta.foundation.service.info.CachedInfoImpl$Proxy$_$$_WeldClientProxy.load(Unknown Source)

Caused by: java.lang.IllegalStateException: org.hibernate.resource.beans.container.internal.NotYetReadyException: CDI BeanManager not (yet) ready to use

Caused by: org.hibernate.resource.beans.container.internal.NotYetReadyException: CDI BeanManager not (yet) ready to use

Caused by: java.lang.NullPointerException

1. Re: EAGER CDI with AttributeConverter error

the exception suggests that you are attempting to use BeanManager too early on.

What observer method in CDI extension do you use? I would expect this won’t work until AfterDeploymentValidation.

2. Re: EAGER CDI with AttributeConverter error

Thank you for your reply.

Yes, i use AfterDeploymentValidation observer event. e.g.

What shoud i use if i want loading data from database after my application started?

It works when there is no AttributeConverter

3. Re: EAGER CDI with AttributeConverter error

This sounds more like a Hibernate bug, or a problem in integrating CDI and hibernate bootstrap.

I have found this Hibernate issue which seems spot on to what you are describing — [HHH-12912] NullPointerException when named query with a converter is compiled before CDI BeanManager is available using… (although I don’t know if you are using WFLY).

The issue above has some workarounds mentioned, give it a spin.

Otherwise, I don’t think you can do much from CDI side. Maybe look for some lifecycle event that comes even after CDI’s AfterDeploymentValidation, perhaps some event coming from Hibernate that you could hook into? But I am really just guessing here.

Источник

Error Attempting to Apply Attribute Converter

On a live server we have recently received many errors of:

However, the processes worked previously without any issues, so I don’t believe it to be a BDM/form/contract issue.

Tasks have also been getting completed and then ‘reset’ to an earlier task. I am worried about the communication between DB and server.

I restarted the server already but it has not resolved the issue.

Any help on this is greatly appreciated.

  • Log in or register to post comments
  • 2545 reads

The type used to store the date must have been changed from LocalDate to LocalDateTime at some point. It needs a database migration in order to have a proper LocalDateTime format in database ( yyyy-mm-ddThh:mm:ss ).

  • Log in or register to post comments
  • 102 reads

But in the BDM it is stored as Date Only, same for Contract/Form. And in the DB it’s only been stored this way too?
How would a database migration solve this issue?

If the LocalDateTime converter is triggered, it is because the attribute in the BDM has a DATE-TIME type (at least the deployed version). If you are the administrator of the production, you may retrieve the deployed BDM to double-check.

You can find the generated BDR jar file here:

server/temp/bonita_engine_151728@r /platform/classloaders/local/TENANT/1/engine-classloader /BDR .jar

The bom.xml is at the root of the jar file.

Also, it could help to identify what action triggers that exception in your workflow.

This is such useful info, thank you.

Latest

Unanswered

Popular

  1. Bonita runtime : apparently missing tomcat library for openSSL — 5,403 reads
  2. Console server does not start because java.lang.ClassCastException — 2,742 reads
  3. Error Attempting to Apply Attribute Converter — 2,545 reads
  4. Connect to SQL Server instance — 1,842 reads
  5. How can I use external sql content as a selection list in an application form? — 1,327 reads

Bonitasoft fully supports digital operations and IT modernization with Bonita, an open-source and extensible platform for automation and optimization of business processes. The Bonita platform accelerates development and production with clear separation between capabilities for visual programming and for coding. Bonita integrates with existing information systems, orchestrates heterogeneous systems, and provides deep visibility into processes across the organization.

Источник

Как сохранить свойство типа List в JPA?

каков самый умный способ получить объект с сохраненным полем типа List?

этот код производит:

10 ответов:

используйте некоторую реализацию JPA 2: она добавляет аннотацию @ElementCollection, аналогичную Hibernate, которая делает именно то, что вам нужно. Есть один пример здесь.

Как уже упоминалось в комментариях ниже, правильная реализация JPA 2 является

этот ответ был сделан до реализации JPA2, если вы используете JPA2, см. ответ ElementCollection выше:

списки объектов внутри объекта модели обычно рассматриваются как отношения «OneToMany» с другим объектом. Однако строка не является (сама по себе) допустимым клиентом отношения «один ко многим», поскольку у нее нет идентификатора.

Итак, вы должны преобразуйте список строк в список объектов JPA класса аргументов, содержащих идентификатор и веревочка. Вы можете потенциально использовать строку в качестве идентификатора, что сэкономит немного места в вашей таблице как от удаления поля ID, так и от консолидации строк, где строки равны, но вы потеряете возможность упорядочить аргументы обратно в их исходный порядок (поскольку вы не сохранили никакой информации о порядке).

кроме того, вы можете преобразовать свой список в @Transient и добавить другое поле (argStorage) в свой класс, который является либо VARCHAR (), либо CLOB. Вы затем нужно добавить 3 функции: 2 из них одинаковы и должны преобразовать ваш список строк в одну строку (в argStorage), разделенную таким образом, что вы можете легко разделить их. Аннотируйте эти две функции (каждая из которых делает то же самое) с помощью @PrePersist и @PreUpdate. Наконец, добавьте третью функцию, которая снова разбивает argStorage на список строк и аннотирует его @PostLoad. Это будет держать ваш CLOB обновляется со строками всякий раз, когда вы идете, чтобы сохранить команду, и сохранить поле argStorage обновлены, прежде чем хранить его в БД.

Я все же предлагаю сделать первый случай. Это хорошая практика для настоящих отношений позже.

сопоставление коллекций типов значений с аннотациями [. ]. На момент написания статьи он не является частью стандарта персистентности Java

Если вы используете Hibernate, вы можете сделать что-то вроде:

обновление: Примечание, теперь это доступно в JPA2.

У меня была та же проблема, поэтому я вложил возможное решение, но в конце я решил реализовать свой ‘;’ разделенный список строк.

таким образом, список легко читается / редактируется в таблице базы данных;

при использовании реализации Hibernate JPA я обнаружил, что простое объявление типа как ArrayList вместо List позволяет hibernate хранить список данных.

очевидно, что это имеет ряд недостатков по сравнению с созданием списка объектов. Нет ленивой загрузки, нет возможности ссылаться на объекты в списке из других объектов, возможно, больше трудностей в построении запросов к базе данных. Однако, когда вы имеете дело со списками довольно примитивных типов то, что вы всегда будете хотеть охотно принести вместе с сущностью, тогда этот подход кажется мне прекрасным.

мы также можем использовать это.

хорошо, я знаю, что это немного поздно. Но для тех смельчаков,которые увидят это со временем.

@Basic: Самый простой тип сопоставления со столбцом базы данных. Основная аннотация может быть применена к постоянному свойству или переменной экземпляра любого из следующих типов: Java primitive types, [. ], перечисления и любой другой тип, который реализует java. io. Serializable.

важная часть это тип, который реализует Serializable

таким образом, на сегодняшний день самым простым и простым в использовании решением является просто использование ArrayList вместо List (или любого сериализуемого контейнера):

однако помните, что это будет использовать системную сериализацию, поэтому она будет иметь некоторую цену, например:

при сериализации объектной модели будут меняться, у не может быть в состоянии восстановить данные

добавлены небольшие накладные расходы для каждого сохраненного элемента.

Это довольно просто хранить флаги или несколько элементов, но я бы не стал рекомендуется хранить данные, которые могут стать большими.

извините, чтобы возродить старый поток, но если кто-то ищет альтернативное решение, где вы храните свои списки строк как одно поле в своей базе данных, вот как я решил это. Создайте такой конвертер:

теперь используйте его на своих объектах следующим образом:

в базе данных ваш список будет храниться как foo; bar; foobar и в вашем объекте Java вы получите список с этими строками.

надеюсь, что это полезно для кого-то.

мое исправление для этой проблемы состояло в том, чтобы отделить первичный ключ от внешнего ключа. Если вы используете eclipse и внесли вышеуказанные изменения, не забудьте обновить проводник базы данных. Затем воссоздайте объекты из таблиц.

Тьяго ответ правильный, добавив образец более конкретный вопрос,@ElementCollection будет создать новую таблицу в базе данных, но без сопоставления двух таблиц, это означает, что коллекция не коллекция, но коллекция простые типы (строки, и т. д.) или набор встраиваемых элементов (класс с аннотацией @Embeddable).

вот пример для сохранения списка строка

здесь образец для сохранения списка настраиваемого объекта

для этого случая нам нужно сделать класс встраиваемые

Источник

Ошибка при попытке применить AttributeConverter

Я использовал JPA AttributeConverter с spring boot 1.2.1 RELEASE и он работал нормально. Но я получаю следующую ошибку после обновления до spring boot 1.3.0.RELEASE

Я в своем POST JSON на данный момент не выставляю serviceBeginTime и serviceEndTime. Но это не было дай мне null указатель до того как я обновил spring boot версию.

Converter class

Entity

Database fields

1 ответ

Я пытаюсь использовать AttributeConverter для хранения новых значений Java 8 ZonedDateTime в базе данных MySQL (поле DATETIME) с помощью Hibernate 4.3.0. Когда я пытаюсь выполнить обновление получаю вот такую ошибку: . Data truncation: Incorrect datetime value.

Можно ли создать AttributeConverter ? Я хочу использовать его в Spring проекте с Hibernate. Я хочу преобразовать String dataColumn в Date атрибут сущности. Пожалуйста, помогите мне. Он хорошо помещается в package, чем сканируется hibernate @Converter(autoApply=true) public class.

Добавил проверку на null как та была самой простой.

Похожие вопросы:

Хотел использовать новую фичу JPA 2.1 для создания кастомного дженерик конвертера Enum. Но на deploy получаю вот такую ошибку: Caused by: org.hibernate.AssertionFailure: Could not extract.

У меня есть простая AttributeConverter реализация в которую я пытаюсь инжектить объект который должен предоставить логику конвертации, но @Inject как будто не работает для этого случая. Класс.

Если у меня есть AttributeConverter который меняет длину инпута перед тем как персистировать его в БД, что бы был правильный способ убедиться, что измененный инпут не превышает максимальную длину.

Я пытаюсь использовать AttributeConverter для хранения новых значений Java 8 ZonedDateTime в базе данных MySQL (поле DATETIME) с помощью Hibernate 4.3.0. Когда я пытаюсь выполнить обновление получаю.

Можно ли создать AttributeConverter ? Я хочу использовать его в Spring проекте с Hibernate. Я хочу преобразовать String dataColumn в Date атрибут сущности. Пожалуйста, помогите.

Я использую hibernate-core 5.1.0 и у меня реализован конвертер, который строит HashMap для поля. Проблема в том, что hibernate терпит неудачу во время построения sessionFactory. Он кидает Unable to.

Мне нужно конвертировать между Map и JSON-строкой при общении между Java-приложением и MySql. Я пока натолкнулся на два очень перспективных решения: AttributeConverter и UserType. Есть ли какие-то.

Я ищу простой способ запроса к базе данных столбца типа string в формате YYYYMMDD. Это можно было бы сделать нативным запросом вроде: select * from TPRODUCT where to_date(ENDOFPRODUCTION.

Я прохожу по этой ссылке: Учебник по запросам Hyperledger Composer для обновления существующей бизнес-сети. До шага :3 у меня все работает нормально. Но всякий раз, когда я выполняю команду step:4.

Я разрабатываю Spring Data JPA приложение, и у меня создан класс AttributeConverter для того, чтобы сохранить св-во ArrayList объектов в виде JSON в столбце базы данных. Внутри этого класса мне.

Источник

Импорт javax.persistence невозможен.

В настоящее время я работаю над проектом, который требует EntityManager EntityManagerFacotry и Persistence каждый из пакета javax.persistence. Это похоже на службу базы данных, но текущий код не очень хорошо документирован. При поиске в google кажется, что должен быть xml файл, который поставляется вместе с этим, но нет ни одного из них. Я предполагаю, что мой вопрос заключается в том, как я могу избавиться от этих неразрешенных импортных данных? Должен ли я добавить еще одну банку в путь сборки? Кажется, что мне не нужно было, так как это было вокруг с 1,5.

Любая помощь очень ценится.

ОТВЕТЫ

Ответ 1

hibernate-distribution-3.6.10.Finallibjpa: добавьте эту банку, чтобы решить эту проблему. Он присутствует в папке lib внутри, где у вас есть папка jpa — > внутри которой у вас есть hibernate-jpa-2.0-1.0.1.Final jar

Ответ 2

Да, вам, вероятно, понадобится добавить еще одну банку или зависимость

javax.persistence.* является частью Java Persistence API (JPA). Это всего лишь API, вы можете думать о нем как об интерфейсе. Существует множество реализаций JPA, и этот ответ дает очень хорошую проработку каждого из них, а также того, что использовать.

Если ваш javax.persistence.* Не может быть разрешен, вам нужно будет предоставить jar, который реализует JPA. Вы можете сделать это, либо загрузив его вручную (и добавив в свой проект), либо добавив объявление в инструмент управления зависимостями (например, Ivy/Maven/Gradle). Смотрите здесь для реализации EclipseLink (эталонной реализации) в репозитории Maven.

После этого ваш импорт должен быть решен.

Также смотрите здесь о том, что такое JPA. Xml, на который вы ссылаетесь, может быть persistence.xml , что объясняется на странице 3 ссылки.

При этом, вы можете просто указывать на неправильную целевую среду выполнения

Если я правильно помню, вам не нужно предоставлять реализацию JPA, если вы развертываете ее на сервере приложений JavaEE, таком как JBoss. См. Здесь «Обратите внимание, что вам обычно это не нужно, когда вы развертываете свое приложение на сервере приложений Java EE 6 (например, JBoss AS 6)». Попробуйте изменить целевую среду выполнения вашего проекта.

Если ваш локальный проект настроен так, чтобы он указывал на Tomcat, в то время как ваше удаленное хранилище предполагает использование сервера JavaEE, это может иметь место. См. Здесь разницу между Tomcat и JBoss.

Изменение: я изменил свой проект, чтобы указать на GlassFish вместо Tomcat и javax.persistence.* нормально без какой-либо явной зависимости JPA.

Ответ 3

Если кто-то использует Maven, вам нужно добавить зависимость в файле POM.XML. Последняя версия этой публикации приведена ниже:

Ответ 4

Я столкнулся с той же самой проблемой и понял, что, поскольку я использую весеннюю загрузку, все, что мне нужно было сделать, чтобы решить эту проблему, это добавить следующую зависимость:

Ответ 5

Мое решение состояло в том, чтобы выбрать профили maven, которые я определил в моем pom.xml, в котором я объявлял зависимости hibernate.

CTRL + ALT + P в eclipse.

В моем проекте я столкнулся с этой проблемой и многими другими, потому что в моем пом у меня разные профили для поддержки Glassfish 3, Glassfish 4, а также WildFly, поэтому у меня есть разные версии Hibernate для каждого контейнера, а также разные цели компиляции Java и т.д. на. Выбор активных профилей maven разрешил мою проблему.

Ответ 6

Если вы используете Hibernate в качестве реализации JPA, и вы не используете Maven/ Gradle, проще всего загружать весь пакет вместо jar файла по одному.

Перейдите http://hibernate.org/orm/downloads/ и загрузите последнюю библиотеку, извлеките банку из папки required .

Ответ 7

В новых jiber файлах hibernate вы можете найти требуемый jpa файл в «hibernate-search-5.8.0.Finaldistlibprovidehibernate-jpa-2.1-api-1.0.0.Final». Вы должны добавить этот JAR файл в путь сборки Java вашего проекта. Это, скорее всего, решит проблему.

Источник

I was using JPA AttributeConverter with spring boot 1.2.1 RELEASE and it worked fine. But I get the following error after upgrading to spring boot 1.3.0.RELEASE

    Caused by: javax.persistence.PersistenceException: Error attempting to apply AttributeConverter
    at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$1.bind(AttributeConverterSqlTypeDescriptorAdapter.java:103)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281)
    at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:56)
    at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2843)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3248)
    at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3183)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3525)
    at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:159)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:465)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:351)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77)
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517)
    ... 81 more
Caused by: java.lang.NullPointerException
    at rafito.spring.boot.domain.TimestampPersistenceConverter.convertToDatabaseColumn(TimestampPersistenceConverter.java:16)
    at rafito.spring.boot.domain.TimestampPersistenceConverter.convertToDatabaseColumn(TimestampPersistenceConverter.java:10)
    at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$1.bind(AttributeConverterSqlTypeDescriptorAdapter.java:97)

I am not setting serviceBeginTime and serviceEndTime in my POST JSON currently. But this wasn’t giving me a null pointer before I upgraded spring boot version.

Converter class

@Converter
public class TimestampPersistenceConverter implements AttributeConverter<Long, Timestamp> {


    @Override
    public Timestamp convertToDatabaseColumn(Long aLong) {
        return new Timestamp(aLong);
    }

    @Override
    public Long convertToEntityAttribute(Timestamp timestamp) {
        return timestamp.getTime();
    }
}

Entity

@Column(name = "service_begin_time")
@Convert(converter = TimestampPersistenceConverter.class)
Long serviceBeginTime;

@Column(name = "service_end_time")
@Convert(converter = TimestampPersistenceConverter.class)
Long serviceEndTime;

Database fields

service_begin_time timestamp without time zone,
service_end_time timestamp without time zone,

Added a null check as that was the easiest.

@Override
    public Timestamp convertToDatabaseColumn(Long aLong) {
        if (aLong == null)
            return null;
        return new Timestamp(aLong);
    }

I want to load some configurable data from database when my application startup, so i use . javax.enterprise.inject.spi.Extension

Caused by: javax.persistence.PersistenceException: Error attempting to apply AttributeConverter

        at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:148)

        at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.extract(AttributeConverterSqlTypeDescriptorAdapter.java:121)

        at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:261)

        at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)

        at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:247)

        at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:333)

        at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3007)

        at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1746)

        at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1672)

        at org.hibernate.loader.Loader.getRow(Loader.java:1561)

        at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:731)

        at org.hibernate.loader.Loader.processResultSet(Loader.java:990)

        at org.hibernate.loader.Loader.doQuery(Loader.java:948)

        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:340)

        at org.hibernate.loader.Loader.doList(Loader.java:2689)

        at org.hibernate.loader.Loader.doList(Loader.java:2672)

        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2506)

        at org.hibernate.loader.Loader.list(Loader.java:2501)

        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:504)

        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:395)

        at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:220)

        at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1508)

        at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1537)

        at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1505)

        at org.hibernate.query.Query.getResultList(Query.java:135)

        at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:74)

        at org.jboss.as.jpa.container.TypedQueryNonTxInvocationDetacher.getResultList(TypedQueryNonTxInvocationDetacher.java:58)

        at com.me.ta.foundation.service.info.base.impl.JPAAgioLimitService.load(JPAAgioLimitService.java:66)

        at com.me.ta.foundation.service.info.base.impl.JPAAgioLimitService$Proxy$_$$_WeldClientProxy.load(Unknown Source)

        at com.me.ta.foundation.service.info.CachedInfoImpl.load(CachedInfoImpl.java:372)

        at com.me.ta.foundation.service.info.CachedInfoImpl$Proxy$_$$_WeldClientProxy.load(Unknown Source)

        at com.me.ta.foundation.service.info.base.impl.JPABaseInfo.loadInfo(JPABaseInfo.java:234)

        … 27 more

Caused by: java.lang.IllegalStateException: org.hibernate.resource.beans.container.internal.NotYetReadyException: CDI BeanManager not (yet) ready to use

        at org.hibernate.resource.beans.container.internal.JpaCompliantLifecycleStrategy$BeanImpl.initialize(JpaCompliantLifecycleStrategy.java:112)

        at org.hibernate.resource.beans.container.internal.CdiBeanContainerExtendedAccessImpl$BeanImpl.initialize(CdiBeanContainerExtendedAccessImpl.java:113)

        at org.hibernate.resource.beans.container.internal.CdiBeanContainerExtendedAccessImpl$BeanImpl.getBeanInstance(CdiBeanContainerExtendedAccessImpl.java:119)

        at org.hibernate.resource.beans.internal.ManagedBeanRegistryImpl$ContainedBeanManagedBeanAdapter.getBeanInstance(ManagedBeanRegistryImpl.java:139)

        at org.hibernate.metamodel.model.convert.internal.JpaAttributeConverterImpl.toDomainValue(JpaAttributeConverterImpl.java:45)

        at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:140)

        … 58 more

Caused by: org.hibernate.resource.beans.container.internal.NotYetReadyException: CDI BeanManager not (yet) ready to use

        … 64 more

Caused by: java.lang.NullPointerException

        at org.hibernate.resource.beans.container.internal.JpaCompliantLifecycleStrategy$BeanImpl.initialize(JpaCompliantLifecycleStrategy.java:109)

        … 63 more

My application uses Spring Boot,JPA and Crnk Framework and mariadb as the database.

I have a field defined like this

@Column(name = "baskets", columnDefinition = "TEXT")
@Convert(converter = UUIDListConverter.class)
private List<UUID> baskets;

And in mariadb it looks like this

enter image description here
enter image description here

And my mapper is written like this

@Component
public class UUIDListConverter implements AttributeConverter<List<UUID>, String> {

    @Autowired
    private ObjectMapper objectMapper;

    @Override
    public List<UUID> convertToEntityAttribute(String dbData) {
        try {
            return objectMapper.readValue(dbData, new TypeReference<List<UUID>>() {});
        } catch (JsonProcessingException e) {
            throw new IllegalArgumentException(
                    "Unable to convert attribute JSON from database format: " + e.getMessage(), e);
        }
    }
}

I tried updating the value of the baskets with the following query in mariadb. I ran this query in mysql gui tool for mariadb.

update table_name set baskets = (UUID()) where code = 'XXX';

It inserted the value into the baskets column. The value that got inserted into the column is this

a5cff67a-6098-11ec-9745-acde48001122

But when i try to read the columns and convert to model object. it gives me the following error

org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceException: Error attempting to apply AttributeConverter

Caused by: java.lang.IllegalArgumentException: Unable to convert attribute JSON from database format: Unrecognized token 'a5cff67a': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"a5cff67a-6098-11ec-9745-acde48001122"; line: 1, column: 9]
    at util.UUIDListConverter.convertToEntityAttribute(UUIDListConverter.java:34)
    at util.UUIDListConverter.convertToEntityAttribute(UUIDListConverter.java:12)
    at org.hibernate.metamodel.model.convert.internal.JpaAttributeConverterImpl.toDomainValue(JpaAttributeConverterImpl.java:45)
    at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:140)
    ... 148 more
Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'a5cff67a': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"a5cff67a-6098-11ec-9745-acde48001122"; line: 1, column: 9]
  1. Is it because the data type of baskets column is «Text». ?

2.Should the data type be «BINARY (16) to hold the UUID values. ?

Any other suggestions/ help

Submitted by jonigray on Fri, 03/25/2022 — 02:54

On a live server we have recently received many errors of:

2022-03-24 18:14:26.008 +0000 SEVERE: org.restlet.Component.BonitaRestletApplication Exception or error caught in server resource
org.bonitasoft.engine.exception.BonitaRuntimeException: USERNAME= | org.bonitasoft.engine.commons.exceptions.SRetryableException: javax.persistence.PersistenceException: Error attempting to apply AttributeConverter

Caused by: java.lang.RuntimeException: Database date & time format must be ISO-8601 compliant ( yyyy-mm-ddThh:mm:ss )
        at org.bonitasoft.engine.business.data.generator.DateAndTimeConverter.convertToEntityAttribute(DateAndTimeConverter.java:46)
        at org.bonitasoft.engine.business.data.generator.DateAndTimeConverter.convertToEntityAttribute(DateAndTimeConverter.java:27)
        at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:142)
        ... 150 more
Caused by: java.time.format.DateTimeParseException: Text '2022-01-17' could not be parsed at index 10
        at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
        at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
        at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:492)
        at org.bonitasoft.engine.business.data.generator.DateAndTimeConverter.convertToEntityAttribute(DateAndTimeConverter.java:44)

However, the processes worked previously without any issues, so I don’t believe it to be a BDM/form/contract issue.

Tasks have also been getting completed and then ‘reset’ to an earlier task. I am worried about the communication between DB and server.

I restarted the server already but it has not resolved the issue.

Any help on this is greatly appreciated.

  • 2769 reads

Submitted by romain.bioteau on Fri, 03/25/2022 — 10:03

Hi,

The type used to store the date must have been changed from LocalDate to LocalDateTime at some point. It needs a database migration in order to have a proper LocalDateTime format in database (yyyy-mm-ddThh:mm:ss).

HTH
Romain

  • 112 reads

Я пытаюсь использовать конвертер атрибутов для преобразования двух полей в моих классах. Я довольно точно следил за этими руководствами, но все еще получаю эту странную ошибку. https://sultanov.dev/blog/database-column-level-encryption-with-spring-data-jpa/ https://beingcrazydev.com/spring-data-jpa-database-column-encryption/ https://thorben-janssen.com/how-to-use-jpa-type-converter-to/

Вот сокращенная версия сообщения об ошибке, которое я постоянно получаю:

Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceException: Error attempting to apply AttributeConverter
org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceException: Error attempting to apply AttributeConverter
    at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:408)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
    at com.sun.proxy.$Proxy88.save(Unknown Source)
    at swe.bookstore.controller.RegisterController.createAccount(RegisterController.java:58)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)

Caused by: javax.persistence.PersistenceException: Error attempting to apply AttributeConverter
    at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:148)
    at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.extract(AttributeConverterSqlTypeDescriptorAdapter.java:121)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243)
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329)

Caused by: java.lang.IllegalArgumentException: Last unit does not have enough valid bits
    at java.base/java.util.Base64$Decoder.decode0(Base64.java:766)
    at java.base/java.util.Base64$Decoder.decode(Base64.java:538)
    at java.base/java.util.Base64$Decoder.decode(Base64.java:561)
    at swe.bookstore.entity.AttributeEncryptor.convertToEntityAttribute(AttributeEncryptor.java:44)
    at swe.bookstore.entity.AttributeEncryptor.convertToEntityAttribute(AttributeEncryptor.java:14)
    at org.hibernate.metamodel.model.convert.internal.JpaAttributeConverterImpl.toDomainValue(JpaAttributeConverterImpl.java:45)
    at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:140)
    ... 134 more

Вот мой код:

@Component
public class AttributeEncryptor implements AttributeConverter<String, String> {
    private static final String AES = "AES";
    private static final byte[] encryptionKey = "123-a-secret-key".getBytes(); // do not change this!!

    private final Key key;
    private final Cipher encryptCipher;
    private final Cipher decryptCipher;

    public AttributeEncryptor() throws Exception {
        key = new SecretKeySpec(encryptionKey, AES);

        encryptCipher = Cipher.getInstance(AES);
        decryptCipher = Cipher.getInstance(AES);
    }

    @Override
    public String convertToDatabaseColumn(String attribute) {
        try {
            encryptCipher.init(Cipher.ENCRYPT_MODE, key);
            return Base64.getEncoder().encodeToString(encryptCipher.doFinal(attribute.getBytes()));
        } catch (InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
            throw new IllegalArgumentException(e);
        }
    }

    @Override
    public String convertToEntityAttribute(String dbData) {
        try {
            decryptCipher.init(Cipher.DECRYPT_MODE, key);
            return new String(decryptCipher.doFinal(Base64.getDecoder().decode(dbData)));
        } catch (InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
            throw new IllegalArgumentException(e);
        }
    }

}

И как я применил это в постоянных полях:

@Column(name = "cardNumber", nullable = false)
@Convert(converter = AttributeEncryptor.class)
private String cardNumber;

@Column(name = "`password`", nullable = false, length = 20)
@Convert(converter = AttributeEncryptor.class)
private String password;

Я не понимаю, в чем я ошибаюсь, поскольку следовал инструкциям в прочитанных мною руководствах.

Hi,

We are using Datahub 5.7.0.2-RC1 and when sending an IDOC information of a specific SAP bonusbuy (WPDBBY) we are getting the following error after the composition process and before the publication process.

 2016-03-01 09:49:23,788 [DEBUG] [c.h.d.s.i.AbstractTransactionManagingActionHandler] Handling Event PerformPublicationEvent{actionId=4, systemUrl='http://localh
 ost:7080/datahub-webapp/v1', targetPublicationIds=[22]}
 2016-03-01 09:49:23,796 [ERROR] [c.h.d.s.i.AbstractTransactionManagingActionHandler] Previous event failure PerformPublicationEvent{actionId=4, systemUrl='http:
 //localhost:7080/datahub-webapp/v1', targetPublicationIds=[22]}
 javax.persistence.PersistenceException: Error attempting to apply AttributeConverter
         at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:137
 ) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doExtract(AttributeConverterSqlTypeDescriptorAdapter.java:115) ~
 [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2969) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1695) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1627) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.getRow(Loader.java:1514) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:725) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.processResultSet(Loader.java:952) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.doQuery(Loader.java:920) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.doList(Loader.java:2553) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.doList(Loader.java:2539) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.Loader.list(Loader.java:2364) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:496) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:231) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573) ~[hibernate-entitymanager-4.3.6.Final.jar:4.3.6.Final]
         at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:449) ~[hibernate-entitymanager-4.3.6.Final.jar:4.3.6.Final]
         at com.mysema.query.jpa.impl.AbstractJPAQuery.getResultList(AbstractJPAQuery.java:190) ~[querydsl-jpa-3.5.1.jar:na]
         at com.mysema.query.jpa.impl.AbstractJPAQuery.list(AbstractJPAQuery.java:238) ~[querydsl-jpa-3.5.1.jar:na]
         at com.hybris.datahub.repository.jpa.impl.DefaultTargetItemJpaRepository.findTargetItemsByPublication(DefaultTargetItemJpaRepository.java:195) ~[datahub
 -service-5.7.0.2-RC1.jar:5.7.0.2-RC1]
         at com.hybris.datahub.repository.jpa.impl.DefaultTargetItemJpaRepository.findTargetItemsByPublication(DefaultTargetItemJpaRepository.java:173) ~[datahub
 -service-5.7.0.2-RC1.jar:5.7.0.2-RC1]
         at com.hybris.datahub.service.impl.DefaultPublicationActionService.findTargetItemsByPublication(DefaultPublicationActionService.java:339) ~[datahub-serv
 ice-5.7.0.2-RC1.jar:5.7.0.2-RC1]
         at sun.reflect.GeneratedMethodAccessor365.invoke(Unknown Source) ~[na:na]
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_45]
         at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_45]
         at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[spring-aop-4.1.5.RELEASE.jar:4.1.5.RELEASE]
         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:201) ~[spring-aop-4.1.5.RELEASE.jar:4.1.5.RELEASE]
         at com.sun.proxy.$Proxy123.findTargetItemsByPublication(Unknown Source) ~[na:na]
         at com.hybris.datahub.service.impl.PublicationActionHandler.lambda$null$104(PublicationActionHandler.java:146) [datahub-service-5.7.0.2-RC1.jar:5.7.0.2-
 RC1]
         at com.hybris.datahub.service.impl.PublicationActionHandler$$Lambda$146/1012669006.accept(Unknown Source) ~[na:na]
         at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[na:1.8.0_45]
         at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[na:1.8.0_45]
         at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_45]
         at com.hybris.datahub.service.impl.PublicationActionHandler.lambda$deleteEmptySubPublications$105(PublicationActionHandler.java:145) [datahub-service-5.
 7.0.2-RC1.jar:5.7.0.2-RC1]

Not all WPDBBY failed. We are using the following connectivity settings:

dataSource.className=com.microsoft.sqlserver.jdbc.SQLServerDataSource dataSource.jdbcUrl=jdbc:sqlserver://localhost;responseBuffering=adaptive;loginTimeout=10;databaseName=xxxx

media.dataSource.className=com.microsoft.sqlserver.jdbc.SQLServerDataSource media.dataSource.jdbcUrl=jdbc:sqlserver://localhost;responseBuffering=adaptive;loginTimeout=10;databaseName=xxxx

We have used the kernel.autoInitMode=create-drop property to recreate the database tables. We have even drop and recreate the full database and still getting this issue.

The database is MSSQLServer 2014 and the JDBC driver used is sqljdbc-4.0.2206.100.jar

Could not find a way to upload the IDOC here.

We appreciate any help you can provide to us.

Thanks

Понравилась статья? Поделить с друзьями:
  • Javascript как изменить цвет текста
  • Javascript как изменить цвет строки
  • Javascript как изменить цвет кнопки
  • Javascript как изменить текст ссылки
  • Javascript как изменить стиль текста