Skip to content

Jpa find with hibernate Any field error.throw #2318

@loujiaye

Description

@loujiaye

I defined two entity associate with Any annotation. now I want to find one entity with other entity by Jpa respository.
but it throw

java.lang.IllegalArgumentException: Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]

how can i do?

thanks

ScIndicator.class

@Entity
public class ScIndicator{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Any(metaColumn = @Column(name = "objectType"), metaDef = "MonitorIndicatorDef", fetch = FetchType.LAZY)
    @JoinColumn(name = "objectName")
    @JsonIgnore
    private MonitorObject monitorObject;

    @Enumerated(EnumType.STRING)
    private TimeType timeType;
    @Temporal(TemporalType.TIMESTAMP)
    private Date time;
    
    private Long pv;
    private Long uvUtdid;
    private Long uvUid;
    private Double coverRatio;
    private Double avgShowPos;

    private Long pvPreMin;
    private Long uvUtdidPreMin;
    private Long uvUidPreMin;
    private Double coverRatioPreMin;
    private Double avgShowPosPreMin;


    private Long pvPreMax;
    private Long uvUtdidPreMax;
    private Long uvUidPreMax;
    private Double coverRatioPreMax;
    private Double avgShowPosPreMax;
    
    //setter() and getter()
   ....
}

MonitorObject.class

@MappedSuperclass
public abstract class MonitorObject{
    @Id
    @NaturalId
    protected String name;

	public String getName() {
		return name;
	}

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

ScIndicatorRepository.class

@Repository
public interface  ScIndicatorRepository extends JpaRepository<ScIndicator, Long> {

    List<ScIndicator> findByMonitorObject(MonitorObject monitorObject);
}

error log

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'scMonitorController': Unsatisfied dependency expressed through field 'scIndicatorRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scIndicatorRepository' defined in cn.sm.data.hanoispring.repository.ScIndicatorRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Reason: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.10.jar:5.3.10]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.10.jar:5.3.10]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:719) [spring-boot-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:401) [spring-boot-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) [spring-boot-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) [spring-boot-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1279) [spring-boot-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
	at cn.sm.data.hanoispring.HanoiSpringApplication.main(HanoiSpringApplication.java:10) [classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_291]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_291]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_291]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.6.0-SNAPSHOT.jar:2.6.0-SNAPSHOT]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scIndicatorRepository' defined in cn.sm.data.hanoispring.repository.ScIndicatorRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Reason: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1380) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[spring-beans-5.3.10.jar:5.3.10]
	... 25 common frames omitted
Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Reason: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]
	at org.springframework.data.repository.query.QueryCreationException.create(QueryCreationException.java:101) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:106) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(QueryExecutorMethodInterceptor.java:94) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_291]
	at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[na:1.8.0_291]
	at java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.java:1051) ~[na:1.8.0_291]
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[na:1.8.0_291]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[na:1.8.0_291]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[na:1.8.0_291]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_291]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_291]
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_291]
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:96) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:86) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at java.util.Optional.map(Optional.java:215) ~[na:1.8.0_291]
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:86) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:360) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:322) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.util.Lazy.getNullable(Lazy.java:230) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:328) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:144) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.10.jar:5.3.10]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.10.jar:5.3.10]
	... 35 common frames omitted
Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List cn.sm.data.hanoispring.repository.ScIndicatorRepository.findByMonitorObject(cn.sm.data.hanoispring.domain.MonitorObject)! Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]
	at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:96) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:107) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:218) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:81) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:102) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	... 57 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unable to locate Attribute  with the the given name [monitorObject] on this ManagedType [cn.sm.data.hanoispring.domain.ScIndicator]
	at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.checkNotNull(AbstractManagedType.java:148) ~[hibernate-core-5.5.7.Final.jar:5.5.7.Final]
	at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:119) ~[hibernate-core-5.5.7.Final.jar:5.5.7.Final]
	at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:44) ~[hibernate-core-5.5.7.Final.jar:5.5.7.Final]
	at org.springframework.data.jpa.repository.query.QueryUtils.requiresOuterJoin(QueryUtils.java:697) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.QueryUtils.toExpressionRecursively(QueryUtils.java:638) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.QueryUtils.toExpressionRecursively(QueryUtils.java:617) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.QueryUtils.toExpressionRecursively(QueryUtils.java:613) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.getTypedPath(JpaQueryCreator.java:385) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:308) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:211) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:124) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:59) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:119) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:95) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:81) ~[spring-data-commons-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.<init>(PartTreeJpaQuery.java:217) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$CountQueryPreparer.<init>(PartTreeJpaQuery.java:348) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:91) ~[spring-data-jpa-2.6.0-M3.jar:2.6.0-M3]
	... 61 common frames omitted

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  30.096 s
[INFO] Finished at: 2021-09-28T10:54:31+08:00
[INFO] ------------------------------------------------------------------------

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions