Код: Выделить всё
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.ModelPart.asBasicValuedModelPart()" because "subPart" is null
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952) ~[spring-context-6.1.10.jar:6.1.10]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.10.jar:6.1.10]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.1.jar:3.3.1]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.1.jar:3.3.1]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.1.jar:3.3.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.1.jar:3.3.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.1.jar:3.3.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.1.jar:3.3.1]
at br.com.xbrain.iam.ApiApplication.main(ApiApplication.java:10) ~[classes/:na]
Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.ModelPart.asBasicValuedModelPart()" because "subPart" is null
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421) ~[spring-orm-6.1.10.jar:6.1.10]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.10.jar:6.1.10]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1835) ~[spring-beans-6.1.10.jar:6.1.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-6.1.10.jar:6.1.10]
... 15 common frames omitted
Caused by: java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.ModelPart.asBasicValuedModelPart()" because "subPart" is null
at org.hibernate.metamodel.mapping.internal.AbstractDomainPath.addSortSpecification(AbstractDomainPath.java:227) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.metamodel.mapping.internal.AbstractDomainPath.apply(AbstractDomainPath.java:182) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.metamodel.mapping.internal.AbstractDomainPath.apply(AbstractDomainPath.java:128) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.metamodel.mapping.ordering.OrderByFragmentImpl.apply(OrderByFragmentImpl.java:35) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.loader.ast.internal.LoaderSelectBuilder.applyOrdering(LoaderSelectBuilder.java:752) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.loader.ast.internal.LoaderSelectBuilder.applyOrdering(LoaderSelectBuilder.java:734) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.loader.ast.internal.LoaderSelectBuilder.generateSelect(LoaderSelectBuilder.java:530) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.loader.ast.internal.LoaderSelectBuilder.createSelect(LoaderSelectBuilder.java:257) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.loader.ast.internal.CollectionLoaderSingleKey.(CollectionLoaderSingleKey.java:56) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.persister.collection.AbstractCollectionPersister.createSingleKeyCollectionLoader(AbstractCollectionPersister.java:814) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.persister.collection.AbstractCollectionPersister.createNamedQueryCollectionLoader(AbstractCollectionPersister.java:799) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.persister.collection.AbstractCollectionPersister.postInstantiate(AbstractCollectionPersister.java:642) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at java.base/java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4783) ~[na:na]
at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization(MappingMetamodelImpl.java:210) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.internal.SessionFactoryImpl.initializeMappingModel(SessionFactoryImpl.java:371) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:300) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:457) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1506) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.10.jar:6.1.10]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.10.jar:6.1.10]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.10.jar:6.1.10]
... 19 common frames omitted
Код: Выделить всё
@Data
@Entity
@Table(name = "user_hierarchy")
@NoArgsConstructor
@AllArgsConstructor
public class UserHierarchy {
@EmbeddedId
private UserHierarchyPk userHierarchyPk;
@JoinColumn(name = "fk_user", foreignKey = @ForeignKey(name = "fk_user_hierarchy_user"),
referencedColumnName = "id", nullable = false, insertable = false, updatable = false)
@ManyToOne(fetch = FetchType.LAZY)
private User user;
@JoinColumn(name = "fk_user_leader", foreignKey = @ForeignKey(name = "fk_user_hierarchy_leader"),
referencedColumnName = "id", nullable = false, insertable = false, updatable = false)
@ManyToOne(fetch = FetchType.LAZY)
private User userLeader;
}
@Data
@NoArgsConstructor
@EqualsAndHashCode(of = {"user", "userLeader"})
@Embeddable
public class UserHierarchyPk implements Serializable {
@Column(name = "fk_user", nullable = false)
private Integer user;
@Column(name = "fk_user_leader", nullable = false)
private Integer userLeader;
}
р>
Код: Выделить всё
private void addSortSpecification(
EmbeddableValuedModelPart embeddableValuedModelPart,
QuerySpec ast,
TableGroup tableGroup,
String collation,
String modelPartName,
SortDirection sortOrder,
NullPrecedence nullPrecedence,
SqlAstCreationState creationState) {
if ( embeddableValuedModelPart.getFetchableName()
.equals( modelPartName ) || ELEMENT_TOKEN.equals( modelPartName ) ) {
embeddableValuedModelPart.forEachSelectable(
(columnIndex, selection) -> {
addSortSpecification(
selection,
ast,
tableGroup,
collation,
sortOrder,
nullPrecedence,
creationState
);
}
);
}
else {
ModelPart subPart = embeddableValuedModelPart.findSubPart( modelPartName, null );
addSortSpecification(
castNonNull( subPart.asBasicValuedModelPart() ), // LINE THAT THROWS NULLPOINTEREXCEPTION BECAUSE SUBPART IS NULL
ast,
tableGroup,
collation,
sortOrder,
nullPrecedence,
creationState
);
}
}
- embeddableValuedModelPart.getFetchableName() = "userHierarchyPk"
- modelPartName = "id"
- ELEMENT_TOKEN = "$element$"
Подробнее здесь: https://stackoverflow.com/questions/787 ... jpa-2-1-to