Hibernate 6.2 бросает `« TargetModelPart » - это null` исключение при попытке мигрировать с 5.xJAVA

Программисты JAVA общаются здесь
Anonymous
Hibernate 6.2 бросает `« TargetModelPart » - это null` исключение при попытке мигрировать с 5.x

Сообщение Anonymous »

Я пытаюсь перенести унаследованное приложение с Spring Boot 2,5 до 3.1.5 (последний на данный момент). < /p>
Это par@jsonignore < /p>
@JoinColumns({
@JoinColumn(name = "TICKER_SERIAL", referencedColumnName = "TICKER_SERIAL", insertable = false, updatable = false),
})
@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
private Set fundTickerDescriptions;

@JsonProperty("INDEX_BENCHMARK")
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "TICKER_SERIAL", referencedColumnName = "TICKER_SERIAL")
@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
private List fundBenchmarkV2s;
< /code>
Для этих 2 списков Hibernate бросает следующие исключения: < /p>
Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: DFN_CONTENT_DATA] Unable to build Hibernate SessionFactory; nested exception is java.lang.IllegalStateException: PostInitCallback queue could not be processed...
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundBenchmarkV2s#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundBenchmarkV2s) - key descriptor
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundTickerDescriptions#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundTickerDescriptions) - key descriptor
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.tickers.TickersAll.stockEligibilities#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.tickers.TickersAll.stockEligibilities) - key descriptor
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.tickers.TickersAll.tickerDescriptions#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.tickers.TickersAll.tickerDescriptions) - key descriptor

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1817)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766)
... 76 common frames omitted
Caused by: java.lang.IllegalStateException: PostInitCallback queue could not be processed...
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundBenchmarkV2s#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundBenchmarkV2s) - key descriptor
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundTickerDescriptions#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.fundtickers.TickerV3.fundTickerDescriptions) - key descriptor
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.tickers.TickersAll.stockEligibilities#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.tickers.TickersAll.stockEligibilities) - key descriptor
- PostInitCallbackEntry - PluralAttributeMapping( NavigableRole[com.mubasher.ccp.library.entities.tickers.TickersAll.tickerDescriptions#{element}]) - element descriptor
- PostInitCallbackEntry - PluralAttributeMapping(com.mubasher.ccp.library.entities.tickers.TickersAll.tickerDescriptions) - key descriptor

at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.executePostInitCallbacks(MappingModelCreationProcess.java:144)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.execute(MappingModelCreationProcess.java:88)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.process(MappingModelCreationProcess.java:42)
at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization(MappingMetamodelImpl.java:201)
at org.hibernate.internal.SessionFactoryImpl.initializeMappingModel(SessionFactoryImpl.java:321)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:271)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1455)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
... 80 common frames omitted
Suppressed: java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.PropertyBasedMapping.getPropertyAccess()" because "targetModelPart" is null
at org.hibernate.metamodel.mapping.internal.SimpleForeignKeyDescriptor.(SimpleForeignKeyDescriptor.java:130)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.interpretPluralAttributeMappingKeyDescriptor(MappingModelCreationHelper.java:784)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.lambda$buildPluralAttributeMapping$3(MappingModelCreationHelper.java:692)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess$PostInitCallbackEntry.process(MappingModelCreationProcess.java:246)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.executePostInitCallbacks(MappingModelCreationProcess.java:106)
... 90 common frames omitted
Suppressed: java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.PropertyBasedMapping.getPropertyAccess()" because "targetModelPart" is null
at org.hibernate.metamodel.mapping.internal.SimpleForeignKeyDescriptor.(SimpleForeignKeyDescriptor.java:130)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.interpretPluralAttributeMappingKeyDescriptor(MappingModelCreationHelper.java:784)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.lambda$buildPluralAttributeMapping$3(MappingModelCreationHelper.java:692)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess$PostInitCallbackEntry.process(MappingModelCreationProcess.java:246)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.executePostInitCallbacks(MappingModelCreationProcess.java:106)
... 90 common frames omitted
Suppressed: java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.PropertyBasedMapping.getPropertyAccess()" because "targetModelPart" is null
at org.hibernate.metamodel.mapping.internal.SimpleForeignKeyDescriptor.(SimpleForeignKeyDescriptor.java:130)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.interpretPluralAttributeMappingKeyDescriptor(MappingModelCreationHelper.java:784)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.lambda$buildPluralAttributeMapping$3(MappingModelCreationHelper.java:692)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess$PostInitCallbackEntry.process(MappingModelCreationProcess.java:246)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.executePostInitCallbacks(MappingModelCreationProcess.java:106)
... 90 common frames omitted
Suppressed: java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.PropertyBasedMapping.getPropertyAccess()" because "targetModelPart" is null
at org.hibernate.metamodel.mapping.internal.SimpleForeignKeyDescriptor.(SimpleForeignKeyDescriptor.java:130)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.interpretPluralAttributeMappingKeyDescriptor(MappingModelCreationHelper.java:784)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationHelper.lambda$buildPluralAttributeMapping$3(MappingModelCreationHelper.java:692)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess$PostInitCallbackEntry.process(MappingModelCreationProcess.java:246)
at org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess.executePostInitCallbacks(MappingModelCreationProcess.java:106)
... 90 common frames omitted
< /code>
Теперь я не хочу раздувать вопрос, добавив все объекты. Пожалуйста, прокомментируйте любые дополнительные фрагменты кода.@Entity
@IdClass(TickerDescriptionV2Id.class)
@Table(name = "TICKER_DESCRIPTIONS", uniqueConstraints = {
@UniqueConstraint(columnNames = {"ticker_id"})
})
public class TickerDescriptionsV2 {

@JsonProperty("SHORT_DESCRIPTION")
@Column(name = "SHORT_DESCRIPTION")
private String shortDescription;

@JsonProperty("LONG_DESCRIPTION")
@Column(name = "LONG_DESCRIPTION")
private String longDescription;

@JsonProperty(value = "TICKER_ID", access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "TICKER_ID")
private String tickerId;

@JsonProperty(value = "SOURCE_ID", access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "SOURCE_ID")
private String sourceId;

@Id
@JsonProperty("LANGUAGE_ID")
@Column(name = "LANGUAGE_ID")
private String languageId;

@Id
@JsonProperty(value = "TICKER_SERIAL", access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "TICKER_SERIAL")
private Long tickerSerial;

@JsonIgnore
@MapsId("TICKER_SERIAL")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TICKER_SERIAL", referencedColumnName = "TICKER_SERIAL", insertable = false, updatable = false)
private TickerV3 ticker;

}
< /code>
А вот идентификационный класс < /p>
@Embeddable
public class TickerDescriptionV2Id implements Serializable {

@Column(name = "LANGUAGE_ID")
@JsonProperty(value = "LANGUAGE_ID")
private String languageId;

@Column(name = "TICKER_SERIAL")
@JsonIgnore
private Long tickerSerial;
}
< /code>
Я думаю, что @embeddable здесь не нужно. Но это написано кто -то еще давным -давно.
Я проверил сайт Hibernate и другие вопросы. Нет ничего похожего на сообщение об ошибке, которое я вижу. Что здесь идет не так?

Подробнее здесь: https://stackoverflow.com/questions/772 ... -to-migrat

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