i have parent entity
@entity @table(name = "tblmodule", uniqueconstraints = { @uniqueconstraint(columnnames = "name") }) @sequencegenerator(name = aclentityconstant.seq_module, initialvalue = 1, allocationsize = 100) public class module implements baseentity { private static final long serialversionuid = -4924925716441434537l; @id @generatedvalue(strategy = generationtype.sequence, generator = aclentityconstant.seq_module) private long id; @column private string name; @column private string displayname; @onetomany(mappedby = "module") @jsonmanagedreference @jsoninclude(jsoninclude.include.non_empty) private list<submodule> submodule; //getters , setters }
module has 1 many relationship submodule , entity class below
@entity @table(name = "tblsubmodule", uniqueconstraints = { @uniqueconstraint(columnnames = {"id", "name"}) }) @sequencegenerator(name = aclentityconstant.seq_submodule, initialvalue = 1, allocationsize = 100) public class submodule implements baseentity { private static final long serialversionuid = 5452251016263080356l; @id @generatedvalue(strategy = generationtype.sequence, generator = aclentityconstant.seq_submodule) private long id; @column private string name; @column private string displayname; @manytoone @jsonbackreference @jsoninclude(jsoninclude.include.non_empty) private module module; }
i trying find module specific name ('submodule1') of submodule using criteria query. here code:
criteriabuilder cb = getentitymanager().getcriteriabuilder(); criteriaquery cq = cb.createquery(); root root = cq.from(module.class); cq.select(root); listjoin join = root.joinlist("submodule"); cq.where(cb.equal(join.get("name"), "submodule1")); cq.distinct(true); cq.groupby(root.get("name")); typedquery query = getentitymanager().createquery(cq); return query.getresultlist();
using code, gives me all submodules within module.
is there way select submodule name 'submodule1'?
you can return modules contain submodule name = somevalue, not possible in jpa 'module' instances list of submodules filtered original query - jpa required return managed module instances reflect state in database can manage changes might make.
instead of using module.submodules set in object, query sub modules directly query similar "select submodule submodule submodule submodule.name = :name"
. can use results create map of collections of submodules based on submodule.module.
Comments
Post a Comment