@Entity
public class doctor {
@Id
private int id;
private String username;
private String password;
private String phone;
private String email;
@OneToMany(targetEntity = patient.class, cascade = CascadeType.ALL, mappedBy = "doctor")
@Cascade(value = org.hibernate.annotations.CascadeType.ALL)
private Collection<patient> patients = new ArrayList<patient>();
}
@Entity
public class patient {
@Id
private int id;
private String name;
private String surname;
private String phone;
private int systolic;
private int diastolic;
@ManyToOne
private doctor doctor;
}
目前,我只能根据以下标准检索医生信息:
Criteria query = session.createCriteria(doctor.class);
query.createCriteria("patients", "p");
query.add(Restrictions.eq("p.phone", phone));
List<doctor> doctorList = (ArrayList<doctor>) query.list();
我如何通过给病人电话、他的医生信息和一些病人信息来检索hibernate标准?
例如:phone=342342344,那么answear是:
7条答案
按热度按时间5rgfhyps1#
如果您使用的是hibernatetemplate
引自 Spring 论坛
bweufnob2#
---医生信息
gc0ot86w3#
-患者信息(收缩压、舒张压)
iovurdzv4#
你想要的是以下内容。
使用hibernate标准api:
使用hql(实际上只是jpql):
结果中得到的是类型的值
List<Object[]>
. 同时添加@Cascade(value=CascadeType.SAVE_UPDATE)
至doctor
你的场地Patient
班级。sf6xfgos5#
查询只返回医生信息(而不返回患者信息)的原因是,对于onetomany关系,fetchtype默认设置为lazy,如果指定fetch type为eager,hibernate也会返回patients。
8aqjt8rx6#
你有双向Map,所以从每个医生你可以得到他的病人,从每个病人你可以得到他的医生信息。如果你需要一份病人名单,而不是一份医生名单,只需为病人创建类似的标准。
session.createCriteria(patient.class)
,有必要的限制。你不必急着去做。在大多数情况下,我们不需要急于抓取。如果您需要hibernate会话之外的对象,那么最好初始化(hibernate.initialize)集合或代理。顺便说一句,命名java类时使用camel case。这是广泛使用的惯例。
mnemlml87#
哪里
160 170
病人的信息如果不符合标准,是否符合hql?