我想用PostJob检索所有Violation实体,并且不为null。 这是我的违规类:
@Entity
@Table(name="violation")
public class Violation implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5144260292214389455L;
@Id
@GenericGenerator(name = "viol_id", strategy = "com.ivc.talonsystem.util.keygens.ViolationIdGenerator")
@GeneratedValue(generator = "viol_id")
@Column(name = "id")
private Integer id;
@Column(name = "name_empl")
private String nameEmpl;
@NotEmpty
@Column(name = "surname_empl")
private String surnameEmpl;
@Column(name = "lastname_empl")
private String lastnameEmpl;
@NotNull
@Valid
@JoinColumn(name = "id_company", referencedColumnName = "id")
@ManyToOne(optional = false)
private AbstractCompany company;
@JoinColumn(name = "id_post", referencedColumnName = "id")
@ManyToOne(optional = false)
private PostJob post;
@NotNull
@Column(name = "stub_num")
private Integer stubnum;
@NotNull
@Valid
@JoinColumn(name = "id_viol", referencedColumnName = "id")
@ManyToOne(optional = false)
private Violguide violguide;
//getters and setters
}
当我试图使用Hibernate Query来获取对象时:
Session session=createSession();
Query q=session.createQuery("SELECT v FROM Violation v ORDER BY v.dateseize ASC");
List<Violation> violations=(List<Violation>)q.list();
return violations;
我得到完整的Violations列表,其中PostJob为null且不为null。这是hibernate日志:
Hibernate:
select
this_.id as id1_4_4_,
this_.id_company as id_compa6_4_4_,
this_.FIRST_NAME as FIRST_NA2_4_4_,
this_.LAST_NAME as LAST_NAM3_4_4_,
this_.PASSWORD as PASSWORD4_4_4_,
this_.SSO_ID as SSO_ID5_4_4_,
abstractco2_.id as id1_1_0_,
abstractco2_.callname as callname2_1_0_,
abstractco2_1_.briefname as briefnam1_7_0_,
abstractco2_1_.fullname as fullname2_7_0_,
abstractco2_2_.name as name1_8_0_,
abstractco2_2_.id_rju as id_rju3_8_0_,
abstractco2_3_.NAME as NAME1_9_0_,
abstractco2_3_.ID_UNITDEP as ID_UNITD3_9_0_,
abstractco2_4_.NAMEUNIT as NAMEUNIT1_10_0_,
abstractco2_5_.NAME as NAME1_11_0_,
abstractco2_5_.OTD as OTD3_11_0_,
case
when abstractco2_1_.id is not null then 1
when abstractco2_2_.id is not null then 2
when abstractco2_3_.id is not null then 3
when abstractco2_4_.id is not null then 4
when abstractco2_5_.id is not null then 5
when abstractco2_.id is not null then 0
end as clazz_0_,
underrjuco3_.id_rju as id_rju3_1_6_,
underrjuco3_.id as id2_8_6_,
underrjuco3_.id as id1_1_1_,
underrjuco3_1_.callname as callname2_1_1_,
underrjuco3_.name as name1_8_1_,
underrjuco3_.id_rju as id_rju3_8_1_,
unitdepart4_.id as id1_1_2_,
unitdepart4_1_.callname as callname2_1_2_,
unitdepart4_.NAMEUNIT as NAMEUNIT1_10_2_,
rju5_.id as id1_1_3_,
rju5_1_.callname as callname2_1_3_,
rju5_.briefname as briefnam1_7_3_,
rju5_.fullname as fullname2_7_3_
from
app_user this_
inner join
AbstractCompany abstractco2_
on this_.id_company=abstractco2_.id
left outer join
rju abstractco2_1_
on abstractco2_.id=abstractco2_1_.id
left outer join
underrju abstractco2_2_
on abstractco2_.id=abstractco2_2_.id
left outer join
underunitdep abstractco2_3_
on abstractco2_.id=abstractco2_3_.id
left outer join
unitdepart abstractco2_4_
on abstractco2_.id=abstractco2_4_.id
left outer join
v_stan abstractco2_5_
on abstractco2_.id=abstractco2_5_.id
left outer join
underrju underrjuco3_
on abstractco2_.id=underrjuco3_.id_rju
left outer join
AbstractCompany underrjuco3_1_
on underrjuco3_.id=underrjuco3_1_.id
left outer join
unitdepart unitdepart4_
on abstractco2_3_.ID_UNITDEP=unitdepart4_.id
left outer join
AbstractCompany unitdepart4_1_
on unitdepart4_.id=unitdepart4_1_.id
left outer join
rju rju5_
on abstractco2_5_.OTD=rju5_.id
left outer join
AbstractCompany rju5_1_
on rju5_.id=rju5_1_.id
where
this_.SSO_ID=?
如何使用Hibernate Criteria API正确完成? 当我尝试使用Criteria API检索它们时,我只获得了违反Post Post的Violation列表。 这是我的代码,我将使用Criteria API执行此操作:
Session session=createSession(); //createSession method from Parent Dao
criteria=session.createCriteria(Violation.class);
criteria.createCriteria("company", "comp");
criteria.createCriteria("post", "job");
criteria.createCriteria("violguide", "viol_guide"); List<Violation>
violations = criteria.list();
以及我得到的以下日志:
Hibernate:
select
this_.id as id1_12_7_,
this_.id_company as id_comp12_12_7_,
this_.dateorder as dateorde2_12_7_,
this_.seizedate as seizedat3_12_7_,
this_.lastname_empl as lastname4_12_7_,
this_.measure as measure5_12_7_,
this_.name_empl as name_emp6_12_7_,
this_.numorder as numorder7_12_7_,
this_.id_post as id_post13_12_7_,
this_.seizedfrom as seizedfr8_12_7_,
this_.stopmoney as stopmone9_12_7_,
this_.stub_num as stub_nu10_12_7_,
this_.surname_empl as surname11_12_7_,
this_.id_viol as id_viol14_12_7_,
comp1_.id as id1_1_0_,
comp1_.callname as callname2_1_0_,
comp1_1_.briefname as briefnam1_7_0_,
comp1_1_.fullname as fullname2_7_0_,
comp1_2_.name as name1_8_0_,
comp1_2_.id_rju as id_rju3_8_0_,
comp1_3_.NAME as NAME1_9_0_,
comp1_3_.ID_UNITDEP as ID_UNITD3_9_0_,
comp1_4_.NAMEUNIT as NAMEUNIT1_10_0_,
comp1_5_.NAME as NAME1_11_0_,
comp1_5_.OTD as OTD3_11_0_,
case
when comp1_1_.id is not null then 1
when comp1_2_.id is not null then 2
when comp1_3_.id is not null then 3
when comp1_4_.id is not null then 4
when comp1_5_.id is not null then 5
when comp1_.id is not null then 0
end as clazz_0_,
underrjuco6_.id_rju as id_rju3_1_9_,
underrjuco6_.id as id2_8_9_,
underrjuco6_.id as id1_1_1_,
underrjuco6_1_.callname as callname2_1_1_,
underrjuco6_.name as name1_8_1_,
underrjuco6_.id_rju as id_rju3_8_1_,
unitdepart7_.id as id1_1_2_,
unitdepart7_1_.callname as callname2_1_2_,
unitdepart7_.NAMEUNIT as NAMEUNIT1_10_2_,
rju8_.id as id1_1_3_,
rju8_1_.callname as callname2_1_3_,
rju8_.briefname as briefnam1_7_3_,
rju8_.fullname as fullname2_7_3_,
job2_.id as id1_6_4_,
job2_.category as category2_6_4_,
job2_.postname as postname3_6_4_,
viol_guide3_.id as id1_13_5_,
viol_guide3_.id_concl as id_concl4_13_5_,
viol_guide3_.contentviol as contentv2_13_5_,
viol_guide3_.elements as elements3_13_5_,
conclusion11_.id as id1_5_6_,
conclusion11_.content as content2_5_6_
from
violation this_
inner join
AbstractCompany comp1_
on this_.id_company=comp1_.id
left outer join
rju comp1_1_
on comp1_.id=comp1_1_.id
left outer join
underrju comp1_2_
on comp1_.id=comp1_2_.id
left outer join
underunitdep comp1_3_
on comp1_.id=comp1_3_.id
left outer join
unitdepart comp1_4_
on comp1_.id=comp1_4_.id
left outer join
v_stan comp1_5_
on comp1_.id=comp1_5_.id
left outer join
underrju underrjuco6_
on comp1_.id=underrjuco6_.id_rju
left outer join
AbstractCompany underrjuco6_1_
on underrjuco6_.id=underrjuco6_1_.id
left outer join
unitdepart unitdepart7_
on comp1_3_.ID_UNITDEP=unitdepart7_.id
left outer join
AbstractCompany unitdepart7_1_
on unitdepart7_.id=unitdepart7_1_.id
left outer join
rju rju8_
on comp1_5_.OTD=rju8_.id
left outer join
AbstractCompany rju8_1_
on rju8_.id=rju8_1_.id
**inner join //should be left outer join
jobpost job2_
on this_.id_post=job2_.id
inner join
violguide viol_guide3_
on this_.id_viol=viol_guide3_.id**
left outer join
conclusionviolguide conclusion11_
on viol_guide3_.id_concl=conclusion11_.id