Аннотация Hibernate @TenantId не работает с классом @EmbeddedJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Аннотация Hibernate @TenantId не работает с классом @Embedded

Сообщение Anonymous »

Я использую Spring boot v3.0.1 и hibernate v6.1.6.Final. Я пробую аннотацию @TenantId в своем классе сущности. Эта аннотация работает нормально, если я объявляю аннотацию непосредственно в классе сущности. Но если я создам класс @Embeddable, а затем объявлю внутри него аннотацию @TenantId, приложение не запустится.
Ниже приведен пример кода:
BaseEntity.Java

Код: Выделить всё

import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.persistence.MappedSuperclass;
import org.hibernate.annotations.TenantId;

@MappedSuperclass
@Embeddable
public class BaseEntity {

@TenantId
@Column(name = "tenant_id", nullable = false)
private String tenantId;

public BaseEntity() {
}

public BaseEntity(String tenantId) {
this.tenantId = tenantId;
}

public String getTenantId() {
return tenantId;
}

public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
}
Person.java

Код: Выделить всё

import jakarta.persistence.*;

import java.util.Objects;

@Entity
public class Person {

@Id @GeneratedValue private Long id;

@Embedded
private BaseEntity baseEntity;

private String name;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public BaseEntity getBaseEntity() {
return baseEntity;
}

public void setBaseEntity(BaseEntity baseEntity) {
this.baseEntity = baseEntity;
}

@Override
public String toString() {
return "Person{" + "id=" + id + ", name='" + name + '\'' + '}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(id, person.id) && Objects.equals(baseEntity, person.baseEntity) && Objects.equals(name, person.name);
}

@Override
public int hashCode() {
return Objects.hash(id, baseEntity, name);
}
}
Сообщение об ошибке:

org.springframework.beans.factory.BeanCreationException: ошибка
создания bean-компонента с помощью имя 'entityManagerFactory' определено в пути к классу
resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
[PersistenceUnit: default] Невозможно построить Hibernate SessionFactory;
вложенным исключением является org.hibernate.cfg.NotYetImplementedException:
все еще необходимо подключить генерацию составного значения в памяти в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory .java:1751)
~[spring-beans-6.0.3.jar:6.0.3] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
~[spring-beans-6.0.3.jar:6.0.3] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
~ [spring-beans-6.0.3.jar:6.0.3] по адресу
org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
~[spring -beans-6.0.3.jar:6.0.3] по адресу
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
~[spring-beans-6.0. 3.jar:6.0.3] по адресу
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
~[spring-beans-6.0.3.jar:6.0 .3] в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
~[spring-beans-6.0.3.jar:6.0.3] вorg.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1130)
~[spring-context-6.0.3.jar:6.0.3] в
org.springframework. context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:905)
~[spring-context-6.0.3.jar:6.0.3] в
org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:584)
~[spring-context-6.0.3.jar:6.0.3] в
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730)
~[spring-boot-3.0.1.jar:3.0.1] в
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432)
~[spring-boot-3.0 .1.jar:3.0.1] в
org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
~[spring-boot-3.0.1.jar:3.0.1] в
org.springframework.boot.SpringApplication.run(SpringApplication.java:1302)
~[spring-boot-3.0.1.jar:3.0.1] в
org.springframework. boot.SpringApplication.run(SpringApplication.java:1291)
~[spring-boot-3.0.1.jar:3.0.1] в
example.springdata.jpa.hibernatemultitenant.partition.Application.main (Application.java:9)
~[classes/:na] Вызвано: jakarta.persistence.PersistenceException:
[PersistenceUnit: default] Невозможно построить Hibernate SessionFactory;
вложенное исключение — org .hibernate.cfg.NotYetImplementedException:
Все еще необходимо подключить генерацию составных значений в памяти в
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421)
~ [spring-orm-6.0.3.jar:6.0.3] по адресу
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
~[spring-orm-6.0. 3.jar:6.0.3] в
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352)
~[spring-orm-6.0.3.jar:6.0.3 ] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1797)
~[spring-beans-6.0.3.jar:6.0.3] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1747)
~[spring-beans-6.0.3.jar:6.0.3] ... 15 общих фреймов опущены Вызваноот: org.hibernate.cfg.NotYetImplementedException: все еще необходимо подключить
генерацию составных значений в памяти в
org.hibernate.tuple.entity.EntityMetamodel$CompositeGenerationStrategyPairBuilder.buildPair(EntityMetamodel.java) :601)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.tuple.entity.EntityMetamodel.buildGenerationStrategyPair(EntityMetamodel.java:460)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:296)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:728)
~[hibernate- core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:152)
~[hibernate-core-6.1. 6.Final.jar:6.1.6.Final] в
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[na:na] в
java .base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
~[na:na] at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl. java:45)
~[na:na] at
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
~[na:na] at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
~[na:na] at
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister (PersisterFactoryImpl.java:92)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl. java:75)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.processBootEntities(MappingMetamodelImpl) .java:278)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization( MappingMetamodelImpl.java:211)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.metamodel.internal.RuntimeMetamodelsImpl.finishInitialization(RuntimeMetamodelsImpl.java) :60)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:311)
~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:415)
~[ hibernate-core-6.1.6.Final.jar:6.1.6.Final] в
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1425)
~[hibernate -core-6.1.6.Final.jar:6.1.6.Final] в
org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66)
~[spring- orm-6.0.3.jar:6.0.3] по адресу
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376)
~[spring-orm-6.0.3.jar :6.0.3] по адресу
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
~[spring-orm-6.0.3.jar:6.0.3] .. . 19 общих кадров опущены

Любая помощь приветствуется. Заранее спасибо,

Подробнее здесь: https://stackoverflow.com/questions/752 ... dded-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»