hibernate - how to pass positional parameters to createnativequery jpa java -


i have following sql query in j2ee web app unable work, as-is. named parameters sourcesystem , sourceclientid not appear passed query, , therefore not return records. added watch query object querysingleview , maintained value of null debugger ran through code. inserted system.out.println statement under method declaration , confirmed correct values sourcesystem , sourceclientid being passed method signature. using netbeans 8.0, jpa 2.1, running on jboss eap 6.21 server. have multiple entities mapped several tables in oracle database.

here query (i should note items in query follow schema.table.column format - not sure if part of problem, work in 1 test, see comment , sample below main query below):

    public list<string> searchsingleview (string sourcesystem, string sourceclientid) {       //change underscore character in source system value dash, ,   make uppercase. single view accepts      if (!sourcesystem.equals("")) {         sourcesystemsingleview = sourcesystem.replace('_', '-').touppercase();      }          string sqlsingleviewquery = "select distinct " +      "mdmcust_ors.c_bo_contract.last_rowid_system policy_system, " +      "mdmcust_ors.c_bo_contract.src_policy_id policy_id, " +      "mdmcust_ors.c_bo_contract.issue_dt, " +      "mdmcust_ors.c_bo_party_xref.src_client_id src_client_id, " +      "mdmcust_ors.c_bo_party_xref.pers_full_name_txt, " +      "mdmcust_ors.c_bo_party_xref.org_legal_name_txt, " +      "mdmcust_ors.c_bo_party_xref.org_legal_sfx_txt, " +      "mdmcust_ors.c_bo_party_xref.org_name_txt, " +      "mdmcust_ors.c_bo_party_xref.sin_bin_text, " +      "mdmcust_ors.c_bo_party_xref.pers_birth_dt, " +      "mdmcust_ors.c_lu_codes.code_descr_en address_purpose_cd, " +      "mdmcust_ors.c_bo_party_postal_addr.complete_address_txt, " +      "mdmcust_ors.c_bo_party_postal_addr.city_name, " +      "mdmcust_ors.c_bo_party_postal_addr.country_name, " +      "mdmcust_ors.c_bo_party_postal_addr.postal_cd, " +      "mdmcust_ors.c_bo_party_postal_addr.state_province_name " +      "from mdmcust_ors.c_bo_party_xref " +      "left join mdmcust_ors.c_bo_party_postal_addr on                mdmcust_ors.c_bo_party_postal_addr.party_rowid = mdmcust_ors.c_bo_party_xref.rowid_object " +      "left join mdmcust_ors.c_lu_codes on mdmcust_ors.c_bo_party_postal_addr.postal_addr_purpose_cd = mdmcust_ors.c_lu_codes.code " +      "left join mdmcust_ors.c_bo_party_rel on mdmcust_ors.c_bo_party_xref.rowid_object = mdmcust_ors.c_bo_party_rel.from_party_rowid " +      "left join mdmcust_ors.c_bo_contract on mdmcust_ors.c_bo_party_rel.contract_rowid = mdmcust_ors.c_bo_contract.rowid_object " +      "where mdmcust_ors.c_bo_contract.last_rowid_system = :sourcesystemsingleview " +      "and mdmcust_ors.c_bo_party_xref.src_client_id = :sourceclientid " +      "and mdmcust_ors.c_bo_party_postal_addr.postal_addr_purpose_cd = '56|07' " +      "and mdmcust_ors.c_bo_party_postal_addr.last_rowid_system = mdmcust_ors.c_bo_contract.last_rowid_system " +      "order mdmcust_ors.c_bo_contract.last_rowid_system";   querysingleview = emsingleview.createquery(sqlsingleviewquery);  querysingleview.setparameter("sourcesystemsingleview", sourcesystemsingleview);  querysingleview.setparameter("sourceclientid", sourceclientid);  querysingleviewresult = (list<string>) querysingleview.getresultlist();   return querysingleviewresult;  } } 

however, if put literal values in sql query in place of positional parameters works fine (without using setparameter method).

where mdmcust_ors.c_bo_contract.last_rowid_system = 'admin' " + "and mdmcust_ors.c_bo_party_xref.src_client_id = '0000001234' " + 

i have looked online haven't yet found seems address specific question. appreciated. thank you!


Comments