Card:主
Dossier子,一对一关系:
model和映射文件:
package cn.tr.model;
/**
*
*/
public class Card implements java.io.Serializable{
private String cardId;
private String cardCode;
private String diseaseId;
private Dossier dossier;
public Card() {
}
public Card(String cardCode) {
this.cardCode = cardCode;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getDiseaseId() {
return diseaseId;
}
public void setDiseaseId(String diseaseId) {
this.diseaseId = diseaseId;
}
public Dossier getDossier() {
return dossier;
}
public void setDossier(Dossier dossier) {
this.dossier = dossier;
}
}
package cn.tr.model;
import java.util.Date;
/**
*/
public class Dossier implements java.io.Serializable{
private String dossierId;
private Date dtRegister;
private String doctor;
private Card card;
public String getDossierId() {
return dossierId;
}
public void setDossierId(String dossierId) {
this.dossierId = dossierId;
}
public Date getDtRegister() {
return dtRegister;
}
public void setDtRegister(Date dtRegister) {
this.dtRegister = dtRegister;
}
public String getDoctor() {
return doctor;
}
public void setDoctor(String doctor) {
this.doctor = doctor;
}
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
}
<hibernate-mapping>
<class name="cn.tr.model.Card" table="card" schema="MYORACLEDB">
<id name="cardId" type="java.lang.String">
<column name="card_id" length="40" />
<generator class="uuid">
</generator>
</id>
<property name="cardCode" type="java.lang.String">
<column name="card_code" />
</property>
<property name="diseaseId" type="java.lang.String">
<column name="disease_id" />
</property>
<!--many-to-one 加unique=“true”来做一对一关联-->
<one-to-one name="Dossier" class="cn.tr.model.Dossier" property-ref="card" cascade="all" outer-join="true">
</one-to-one>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.tr.model.Dossier" table="dossier" schema="MYORACLEDB">
<id name="dossierId" type="java.lang.String">
<column name="dossier_id" length="40" />
<generator class="uuid">
</generator>
</id>
<property name="dtRegister" type="java.util.Date">
<column name="dt_register"/>
</property>
<property name="doctor" type="java.lang.String">
<column name="doctor"/>
</property>
<!--many-to-one 加unique=“true”实现一对一关联-->
<many-to-one name="card" column="card_id" class="cn.tr.model.Card"
cascade="save-update" unique="true" >
</many-to-one>
</class>
</hibernate-mapping>
outer-join="true" 表示使用外键关联,默认的是使用主键关联;
Action、Service、Dao只像单表操作一样就行,不用任何额外的配置;
jsp页面上:
property="dossier.dtRegister",录入子;
property="dossier.card.cardCode",这样即可通过子的录入页面,录入主的信息
另外,记得在页面上隐藏一下主键,否则修改时可能会报错。
如果通过主的页面录入子,则需要把Card.java类修改一下,否则子存不上主的主键
public void setDossier(Dossier dossier) {
this.dossier = dossier;
if(dossier!= null){
dossier.setCard(this);
}
}