java - hibernate.jpa.criteria.BasicPathUsageException: Cannot join to attribute of basic type -
i have 2 tables: tax , taxrule. there 1 column same in both table i.e tax_rule_id. don't have hibernate mapping onetoone or onetomany. both table looks like-
tax
@id @column(name = "tax_rate_id") private long taxrateid; @column(name = "tax_rule_id") private long taxruleid; @column(name = "tax_type") private string taxtype; tax_rule
@id @column(name = "tax_rule_id") private long taxruleid; @column(name = "tax_cd") private string taxcode; @column(name = "state") private string state; i trying fetch data on key i.e tax_rule_id. column common in both table. have following hibernate code in joining both table on tax_rule_id column follows:
criteriabuilder criteriabuilder = entitymanager.getcriteriabuilder(); criteriaquery<string[]> cquery = criteriabuilder.createquery(string[].class); root<tax> taxroot = cquery.from(tax.class); cquery.multiselect(taxrateroot.get("taxtype"), taxrateroot.get("taxrate")); list<predicate> predicates = new arraylist<>(); join<tax, taxrule> join = taxroot.join("taxruleid"); .....rest of code. i getting following exception on join point:
org.hibernate.jpa.criteria.basicpathusageexception: cannot join attribute of basic type @ org.hibernate.jpa.criteria.path.abstractfromimpl.constructjoin(abstractfromimpl.java:270) @ org.hibernate.jpa.criteria.path.abstractfromimpl.join(abstractfromimpl.java:263) @ org.hibernate.jpa.criteria.path.abstractfromimpl.join(abstractfromimpl.java:436) @ com.iclsystems.base.dao.taxratedaoimpl.gettaxtypeforapplicableworkordertax(taxratedaoimpl.java:31) @ com.iclsystems.base.businessobjects.taxlookupboimpl.gettaxtypeforapplicableworkordertax(taxlookupboimpl.java:53) @ com.iclsystems.base.businessobjects.taxlookupboimpl.getworkordertaxlookup(taxlookupboimpl.java:29) @ com.iclsystems.test.eventhandler.base.taxlookupbotest.testtaxlookupbo(taxlookupbotest.java:52)
you cannot join @column. join associations:
- one-to-one
- one-to-many
- many-to-one
- many-to-many
you need remove line, taxruleid fetched database:
join<tax, taxrule> join = taxroot.join("taxruleid"); if want join taxrule table, need replace the:
@column(name = "tax_rule_id") private long taxruleid; with many-to-one association:
@manytoone @joincolumn(name = "tax_rule_id") private taxrule raxrule;
Comments
Post a Comment