出现这种出错的原因是两张表有关联,就像是一个会员对应有一个会员卡一样,如果你把一张表中的数据删除了话,就破坏了这种对应关系,下面的例子是把会员的ID指向了会员卡的ID;
rg.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.meeMei.domain.Vip#3]
public class Vip implements Serializable{
private Integer id; // ID
private String name; // 会员名
private String contact; // 联系方式
private VipCard vipCard; // 会员卡
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
public VipCard getVipCard() {
return vipCard;
}
public void setVipCard(VipCard vipCard) {
this.vipCard = vipCard;
}
}
public class VipCard implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;// ID
private String number; // 会员卡号
private String password; // 密码
private Float balance; // 余额
private Integer totalScore; // 积分
private Timestamp startDate; // 启用时间
private Float totalSupplement; // 累计充值
private String state; // 状态
private String info; // 备注
private Vip vip; //会员
/** minimal constructor */
public VipCard() {
Timestamp timestamp=new Timestamp(System.currentTimeMillis());
this.password = "000000";
this.balance =0f;
this.totalSupplement=0f;
this.totalScore=0;
this.startDate=timestamp;
this.state = "启用";
}
public Vip getVip() {
return vip;
}
public void setVip(Vip vip) {
this.vip = vip;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Float getBalance() {
return balance;
}
public void setBalance(Float balance) {
this.balance = balance;
}
public Integer getTotalScore() {
return totalScore;
}
public void setTotalScore(Integer totalScore) {
this.totalScore = totalScore;
}
public Timestamp getStartDate() {
return startDate;
}
public void setStartDate(Timestamp startDate) {
this.startDate = startDate;
}
public Float getTotalSupplement() {
return totalSupplement;
}
public void setTotalSupplement(Float totalSupplement) {
this.totalSupplement = totalSupplement;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping package="com.meeMei.domain">
<class name="Vip" table="t_vip" catalog="meemeiclient" lazy="false">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator <param name="property">vipCard</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="12"/>
</property>
<property name="contact" type="java.lang.String">
<column name="contact" length="15" />
</property>
<on
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping package="com.meeMei.domain">
<class name="VipCard" table="t_vip_card" catalog="meemeiclient" lazy="false">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator />
</id>
<property name="number" type="java.lang.String" not-null="true">
<column name="vip_card_number" length="18" />
</property>
<property name="password" type="java.lang.String" not-null="true">
<column name="password" length="20" />
</property>
<property name="balance" type="java.lang.Float" not-null="true">
<column name="balance" />
</property>
<property name="totalScore" type="java.lang.Integer">
<column name="total_score" />
</property>
<property name="startDate" type="java.sql.Timestamp">
<column name="start_date" />
</property>
<property name="totalSupplement" type="java.lang.Float">
<column name="total_supplement" />
</property>
<property name="state" type="java.lang.String" not-null="true">
<column name="state" length="10" />
</property>
<property name="info" type="java.lang.String">
<column name="info" length="200" />
</property>
<on
</hibernate-mapping>