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

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -