java - EJB Mapping of @OneToMany relationships with more than one key in mappedBy -
in project, want utilize @onetomany relationships more 1 key in mappedby attribute.
in project, have incidentreport entity , reportentry entity , next mapping straight forwards
@entity public class reportentry { ... @joincolumn(name = "incident_report", referencedcolumnname = "id") @manytoone private incidentreport incidentreport; private int type; // 0,1,2 ... } @entity public class incidentreport { ... @onetomany(cascade = cascadetype.all, mappedby = "incidentreport") private collection<reportentry> reportentrycollection; ... }
but ideally have 3 different collection( 1 each type of study entry) of reportentry in incidentreport class.
is there way map collection based on 2 keys, incidentreport , value of type ?
something this:
@entity public class incidentreport { ... // type 0 @onetomany(cascade = cascadetype.all, mappedby = "incidentreport", mappedby = "type = 0" ) private collection<reportentry> reportentrycollection1; // type 1 @onetomany(cascade = cascadetype.all, mappedby = "incidentreport" mappedby = "type = 1" ) private collection<reportentry> reportentrycollection1; // type 2 @onetomany(cascade = cascadetype.all, mappedby = "incidentreport" mappedby = "type = 2" ) private collection<reportentry> reportentrycollection1; ... }
is there way ? plan add together entity map these separately. poor way ?
because there type parameter, recommend define 3 different entities based on parameter
@entity public class type1reportentry extends reportentry{} @entity public class type2reportentry extends reportentry{} @entity public class type3reportentry extends reportentry{}
because far @onetomany mapping concerned, wont able accomplish want.
you dont need define namedquery:
assume have entitymanager resource injected session beans, or created entitymanagerfactory
public reportentry getreportentry(class<? extends reportentry> reporttype){ javax.persistence.criteria.criteriaquery cq = getentitymanager().getcriteriabuilder(). createquery(); cq.select(cq.from(reporttype)); homecoming getentitymanager().createquery(cq).getresultlist(); }
java java-ee jpa ejb ejb-3.0
No comments:
Post a Comment