hibernate - how to query on many to one mapping with jpa repository -


i browsed lots of stack on flow issue, though got few answer that's not working in application. trying query data based on field in parent class mapped @onetomany annotation.

my parent class nodedetails:

    @entity @table(name = "tb_node_details") public class nodedetails implements serializable {      /**      *       */     private static final long serialversionuid = 3232846606798223969l;      @id     @generatedvalue(strategy = generationtype.auto)     private long id;      @column(name = "instance_id", nullable = false)     private string instanceid;      @column(name = "host_id")     private string hostid;      @column(name = "host_type")     private string hosttype;      @column(name = "client_name")     private string clientname; 

i have child class nodeadapterkinddetails:

@entity @table(name = "tb_node_adapter_kind_details") public class nodeadapterkinddetails implements serializable {      /**      *       */     private static final long serialversionuid = 6542657705062870675l;      @id     @generatedvalue(strategy = generationtype.auto)     private long id;      @column(name = "adapter_kind", nullable = false)     private string adapterkind;      @manytoone(fetch = fetchtype.eager, cascade = cascadetype.all)     @joincolumn(name = "node_id", nullable = false)     private nodedetails nodedetails;      @onetomany(fetch = fetchtype.lazy, cascade = cascadetype.all, mappedby = "adapterkinddetails")     private set<nodeadapterinstancedetails> adapterinstancedetails = new hashset<>(); 

and child class nodeadapterinstancedetails:

@entity @table(name = "tb_node_adapter_instance_details") public class nodeadapterinstancedetails {      @id     @generatedvalue(strategy = generationtype.auto)     private long id;      @column(name = "adapter_instance")     private string adapterinstance;      @column(name = "active_status", columndefinition = "varchar(20) default 'not active'")     private string activestatus;      // todo: change timestamp string date... check going     // wrong in commented settimestamp method     @column(name = "time_stamp")     private string timestamp;      @manytoone(fetch = fetchtype.eager, cascade = cascadetype.all)     @joincolumn(name = "adapter_kind_id", nullable = false)     private nodeadapterkinddetails adapterkinddetails; 

the dao nodeadapterinstance class:

    @repository(value="nodeadapterinstancedao")     public interface nodeadapterinstancedao extends jparepository<nodeadapterinstancedetails, long> {          @query("select distinct n.adapterinstance nodeadapterinstancedetails n n.adapterkinddetails.nodedetails.clientname = :client_name")         public list<string> getdistinctadapterinstancebyclientname(@param("client_name") string clientname);          @query("select n nodeadapterinstancedetails n n.adapterinstance = :adapter_instance , n.adapterkinddetails.nodedetails.clientname = :client_name")         public nodeadapterinstancedetails getlatestadapterinstancebyadapterinstanceandclientname(@param("adapter_instance") string adapterinstance, @param("client_name") string clientname);  } 

but when try run spring boot, @ application startup get:

**

org.springframework.beans.factory.unsatisfieddependencyexception: error creating bean name 'adapterkindparserserviceimpl': unsatisfied dependency expressed through field 'nodeadapterinstancedao'; nested exception org.springframework.beans.factory.beancreationexception: error creating bean name 'nodeadapterinstancedao': invocation of init method failed; nested exception org.springframework.data.mapping.propertyreferenceexception: no property clientname found type nodeadapterinstancedetails!

**

have done wrong query, how resolve error. can use jpa repository, @query this:

@query("select n nodeadapterinstancedetails n n.adapterinstance = :adapter_instance , n.adapterkinddetails.nodedetails.clientname = :client_name") 

since don't have client info in node adapter instance class need take parent in hierarchy node details class.

this service:

@service public class adapterkindparserserviceimpl implements nodeadapterkinddetailsparserservice {     @autowired     @qualifier(value="nodeadapterinstancedao")     private nodeadapterinstancedao nodeadapterinstancedao;     private list<string> getdistinctadapterinstances(string clientname) {         return nodeadapterinstancedao.finddistinctadapterinstancebyclientname(clientname);     } } 

my complete exception:

org.springframework.beans.factory.unsatisfieddependencyexception: error creating bean name 'adapterkindparserserviceimpl': unsatisfied dependency expressed through field 'nodeadapterinstancedao'; nested exception org.springframework.beans.factory.beancreationexception: error creating bean name 'nodeadapterinstancedao': invocation of init method failed; nested exception org.springframework.data.mapping.propertyreferenceexception: no property clientname found type nodeadapterinstancedetails! @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:588) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:88) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:366) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1264) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:553) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:483) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:306) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:302) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:197) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:761) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:867) ~[spring-context-4.3.10.release.jar:4.3.10.release] @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:543) ~[spring-context-4.3.10.release.jar:4.3.10.release] @ org.springframework.boot.context.embedded.embeddedwebapplicationcontext.refresh(embeddedwebapplicationcontext.java:122) ~[spring-boot-1.5.6.release.jar:1.5.6.release] @ org.springframework.boot.springapplication.refresh(springapplication.java:693) [spring-boot-1.5.6.release.jar:1.5.6.release] @ org.springframework.boot.springapplication.refreshcontext(springapplication.java:360) [spring-boot-1.5.6.release.jar:1.5.6.release] @ org.springframework.boot.springapplication.run(springapplication.java:303) [spring-boot-1.5.6.release.jar:1.5.6.release] @ org.springframework.boot.springapplication.run(springapplication.java:1118) [spring-boot-1.5.6.release.jar:1.5.6.release] @ org.springframework.boot.springapplication.run(springapplication.java:1107) [spring-boot-1.5.6.release.jar:1.5.6.release] @ com.vmware.supernova.topolizerapp.main(topolizerapp.java:18) [classes/:na] caused by: org.springframework.beans.factory.beancreationexception: error creating bean name 'nodeadapterinstancedao': invocation of init method failed; nested exception org.springframework.data.mapping.propertyreferenceexception: no property clientname found type nodeadapterinstancedetails! @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1628) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:555) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:483) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:306) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:302) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:202) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.config.dependencydescriptor.resolvecandidate(dependencydescriptor.java:208) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:1138) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:1066) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:585) ~[spring-beans-4.3.10.release.jar:4.3.10.release] ... 19 common frames omitted caused by: org.springframework.data.mapping.propertyreferenceexception: no property clientname found type nodeadapterinstancedetails! @ org.springframework.data.mapping.propertypath.(propertypath.java:77) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.mapping.propertypath.create(propertypath.java:329) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.mapping.propertypath.create(propertypath.java:309) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.mapping.propertypath.from(propertypath.java:272) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.mapping.propertypath.from(propertypath.java:243) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.query.parser.part.(part.java:76) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.query.parser.parttree$orpart.(parttree.java:247) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.query.parser.parttree$predicate.buildtree(parttree.java:398) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.query.parser.parttree$predicate.(parttree.java:378) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.query.parser.parttree.(parttree.java:89) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.jpa.repository.query.parttreejpaquery.(parttreejpaquery.java:64) ~[spring-data-jpa-1.11.6.release.jar:na] @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$createquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:103) ~[spring-data-jpa-1.11.6.release.jar:na] @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$createifnotfoundquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:214) ~[spring-data-jpa-1.11.6.release.jar:na] @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$abstractquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:77) ~[spring-data-jpa-1.11.6.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.(repositoryfactorysupport.java:436) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorysupport.getrepository(repositoryfactorysupport.java:221) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorybeansupport.initandreturn(repositoryfactorybeansupport.java:277) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorybeansupport.afterpropertiesset(repositoryfactorybeansupport.java:263) ~[spring-data-commons-1.13.6.release.jar:na] @ org.springframework.data.jpa.repository.support.jparepositoryfactorybean.afterpropertiesset(jparepositoryfactorybean.java:101) ~[spring-data-jpa-1.11.6.release.jar:na] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1687) ~[spring-beans-4.3.10.release.jar:4.3.10.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1624) ~[spring-beans-4.3.10.release.jar:4.3.10.release] ... 29 common frames omitted

kindly how resolve exception. , if possible better way use queries @onetoone, @onetomany , @manytomany.

thanks in advance

correct query this:

select distinct      n.adapterinstance       nodeadapterinstancedetails n      join n.adapterkinddetails ad     join ad.nodedetails nd      nd.clientname = :client_name  select      n       nodeadapterinstancedetails n      join n.adapterkinddetails ad     join ad.nodedetails nd      n.adapterinstance = :adapter_instance ,      nd.clientname = :client_name 

to ability use linked entity filed first have 'join' entity.

more info: jpql language reference


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -