Как можно изящно пропустить существующие отношения ManyToOne? ⇐ JAVA
-
Anonymous
Как можно изящно пропустить существующие отношения ManyToOne?
У меня есть устаревший код с множеством связей в одной сущности в Hibernate. В настоящее время часть из них не используется (в БД для них есть нулевые значения), но запрос EntityManager, такой как обновить(), может использовать много ресурсов при попытке загрузить бесполезные связи.
Объект «Вручную» содержит вложенное поле «Вручную», но к нему присоединен другой столбец в той же таблице (template_id)
Таблица выглядит так:
| ручной_ид | .... | ....| идентификатор_шаблона | ... |
--
> public class Руководство реализует Serializable > ---- > --- > @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, > КаскадТип.PERSIST, КаскадТип.DETACH }) > @JoinColumn(name = "template_id") > частный шаблон руководства; на самом деле template_id всегда равен нулю, поэтому эта связь бесполезна.
Как я могу мягко опустить такие отношения? сущность является ядром и просто удалять ее - рискованно.
Я попытался использовать аннотацию @Transient, удалив из поля @ManyToOne и @JoinColumn, но получил такое исключение:
[ОШИБКА] org.springframework.boot.context.embedded.tomcat.TomcatStarter
[*]Ошибка запуска контекста Tomcat. Исключение: org.springframework.beans.factory.UnsatisfiedDependencyException. Сообщение: Ошибка создания bean-компонента с именем «logFilter»: неудовлетворительно зависимость, выраженная через поле «authService»; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем authService: неудовлетворенная зависимость выражается через поле externalAuthService; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем authServiceExternalImpl: неудовлетворительно зависимость, выраженная через поле mqService; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем RabbitMQService: неудовлетворительно зависимость, выраженная через поле objectMapper; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем 'objectMapper', определенным в ресурсе пути к классу [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: Создание экземпляра компонента фабричным методом не удалось; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.fasterxml.jackson.databind.ObjectMapper]: Фабрика метод objectMapper вызвал исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем «config», определенным в ресурсе пути к классу [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: Создание экземпляра компонента фабричным методом не удалось; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось создавать экземпляр [org.springframework.data.rest.core.config.RepositoryRestConfiguration]: Фабричный метод «config» вызвал исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем «репозитории», определенным в ресурсе пути к классу [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: Создание экземпляра компонента фабричным методом не удалось; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось создавать экземпляр [org.springframework.data.repository.support.Repositories]: Фабрика метод «репозитории» выдал исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем crmTaskGoodRepository: невозможно создать внутренний bean '(внутренний bean)#787cddea' типа [org.springframework.orm.jpa.SharedEntityManagerCreator] при настройке свойство компонента 'entityManager'; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание компонента с именем «(внутренний компонент) #787cddea»: невозможно разрешить ссылка на bean-компонент «entityManagerFactory» при настройке конструктора аргумент; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем «entityManagerFactory», определенным в пути к классу ресурс [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Вызов метода init не удался; вложенное исключение javax.persistence.PersistenceException: [PersistenceUnit: по умолчанию] Невозможно собрать Hibernate SessionFactory
У меня есть устаревший код с множеством связей в одной сущности в Hibernate. В настоящее время часть из них не используется (в БД для них есть нулевые значения), но запрос EntityManager, такой как обновить(), может использовать много ресурсов при попытке загрузить бесполезные связи.
Объект «Вручную» содержит вложенное поле «Вручную», но к нему присоединен другой столбец в той же таблице (template_id)
Таблица выглядит так:
| ручной_ид | .... | ....| идентификатор_шаблона | ... |
--
> public class Руководство реализует Serializable > ---- > --- > @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, > КаскадТип.PERSIST, КаскадТип.DETACH }) > @JoinColumn(name = "template_id") > частный шаблон руководства; на самом деле template_id всегда равен нулю, поэтому эта связь бесполезна.
Как я могу мягко опустить такие отношения? сущность является ядром и просто удалять ее - рискованно.
Я попытался использовать аннотацию @Transient, удалив из поля @ManyToOne и @JoinColumn, но получил такое исключение:
[ОШИБКА] org.springframework.boot.context.embedded.tomcat.TomcatStarter
[*]Ошибка запуска контекста Tomcat. Исключение: org.springframework.beans.factory.UnsatisfiedDependencyException. Сообщение: Ошибка создания bean-компонента с именем «logFilter»: неудовлетворительно зависимость, выраженная через поле «authService»; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем authService: неудовлетворенная зависимость выражается через поле externalAuthService; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем authServiceExternalImpl: неудовлетворительно зависимость, выраженная через поле mqService; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем RabbitMQService: неудовлетворительно зависимость, выраженная через поле objectMapper; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем 'objectMapper', определенным в ресурсе пути к классу [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: Создание экземпляра компонента фабричным методом не удалось; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.fasterxml.jackson.databind.ObjectMapper]: Фабрика метод objectMapper вызвал исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем «config», определенным в ресурсе пути к классу [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: Создание экземпляра компонента фабричным методом не удалось; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось создавать экземпляр [org.springframework.data.rest.core.config.RepositoryRestConfiguration]: Фабричный метод «config» вызвал исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем «репозитории», определенным в ресурсе пути к классу [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: Создание экземпляра компонента фабричным методом не удалось; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось создавать экземпляр [org.springframework.data.repository.support.Repositories]: Фабрика метод «репозитории» выдал исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем crmTaskGoodRepository: невозможно создать внутренний bean '(внутренний bean)#787cddea' типа [org.springframework.orm.jpa.SharedEntityManagerCreator] при настройке свойство компонента 'entityManager'; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание компонента с именем «(внутренний компонент) #787cddea»: невозможно разрешить ссылка на bean-компонент «entityManagerFactory» при настройке конструктора аргумент; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание bean-компонента с именем «entityManagerFactory», определенным в пути к классу ресурс [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Вызов метода init не удался; вложенное исключение javax.persistence.PersistenceException: [PersistenceUnit: по умолчанию] Невозможно собрать Hibernate SessionFactory
Мобильная версия