blaze-persistence icon indicating copy to clipboard operation
blaze-persistence copied to clipboard

ManyToOne in Embeddable fails Query

Open mickroll opened this issue 3 years ago • 1 comments

Description

Given an Entity tree

ExampleEntity [id: long, name: String]
 +-- @Embedded ExampleEmbeddable embed
        +-- @ManyToOne Referenced exampleRef [id: long, value: String]

The following query fails:

cbf.create(em, ExampleEntity.class)
                .groupBy("id")
                .page(0, 10)
                .orderByAsc("name")
                .orderByAsc("id")
                .where("name").eq().value("bar") // query works, if no filter is applied
                .getResultList();

Expected behavior

Query always works :)

Actual behavior

org.hibernate.QueryException: could not resolve property: exampleRef of: org.embed.ExampleEntity
	at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:77)
	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:71)
	at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyType(AbstractEntityPersister.java:5116)
	at com.blazebit.persistence.integration.hibernate.base.HibernateJpaProvider.getJoinMappingPropertyNames(HibernateJpaProvider.java:1551)
	at com.blazebit.persistence.impl.CachingJpaProvider.getJoinMappingPropertyNames(CachingJpaProvider.java:402)
	at com.blazebit.persistence.impl.EmbeddableSplittingVisitor.addAttributes(EmbeddableSplittingVisitor.java:229)
	at com.blazebit.persistence.impl.FunctionalDependencyAnalyzerVisitor.visit(FunctionalDependencyAnalyzerVisitor.java:264)
	at com.blazebit.persistence.impl.FunctionalDependencyAnalyzerVisitor.visit(FunctionalDependencyAnalyzerVisitor.java:73)
	at com.blazebit.persistence.parser.expression.PathExpression.accept(PathExpression.java:90)
	at com.blazebit.persistence.impl.FunctionalDependencyAnalyzerVisitor.analyzeFormsUniqueTuple(FunctionalDependencyAnalyzerVisitor.java:113)
	at com.blazebit.persistence.impl.FunctionalDependencyAnalyzerVisitor.getFunctionalDependencyRootExpressions(FunctionalDependencyAnalyzerVisitor.java:143)
	at com.blazebit.persistence.impl.AbstractFullQueryBuilder.getUniqueIdentifierExpressions(AbstractFullQueryBuilder.java:565)
	at com.blazebit.persistence.impl.AbstractFullQueryBuilder.getIdentifierExpressionsToUse(AbstractFullQueryBuilder.java:574)
	at com.blazebit.persistence.impl.PaginatedCriteriaBuilderImpl.isWithInlineIdQuery(PaginatedCriteriaBuilderImpl.java:372)
	at com.blazebit.persistence.impl.PaginatedCriteriaBuilderImpl.prepareAndCheck(PaginatedCriteriaBuilderImpl.java:771)
	at com.blazebit.persistence.impl.PaginatedCriteriaBuilderImpl.getQuery(PaginatedCriteriaBuilderImpl.java:521)
	at com.blazebit.persistence.impl.PaginatedCriteriaBuilderImpl.getResultList(PaginatedCriteriaBuilderImpl.java:613)

Steps to reproduce

clone&build reproducer

Environment

Version: 1.6.3 JPA-Provider: Hibernate 5.6.1.Final DBMS: H2 Application Server: Quarkus 2.6.2.Final

mickroll avatar Jan 19 '22 18:01 mickroll

Thanks for the reproducer, I'll look into that!

beikov avatar Jan 20 '22 07:01 beikov

I just checked the reproducer and it seems that this is not a problem anymore since 1.6.5. Note that you should also switch to blaze-persistence-integration-hibernate-5.6.

beikov avatar Oct 22 '22 09:10 beikov