hibernate一对多双向级联删除

本文介绍了使用Hibernate进行对象关系映射(ORM)的具体实践,包括Operator和Roleinfo两个类的属性定义及其与数据库表之间的映射关系。此外,还探讨了如何通过Hibernate API删除具有相关联操作员的角色。

package pojo;
public class Operator {
 private int id;
 private String name;
 private String password;
 private Roleinfo role;
 private int pid;
 private int rootId;
 private String createIp;
 private String createtime;
 private String updateTime;
 private String MessageCenterType;
 private String status;
 private String local;
 public String getLocal() {
  return local;
 }
 public void setLocal(String local) {
  this.local = local;
 }
 public String getStatus() {
  return status;
 }
 public void setStatus(String status) {
  this.status = status;
 }
 public String getCreateIp() {
  return createIp;
 }
 public void setCreateIp(String createIp) {
  this.createIp = createIp;
 }
 
 
 public String getMessageCenterType() {
  return MessageCenterType;
 }
 public void setMessageCenterType(String messageCenterType) {
  MessageCenterType = messageCenterType;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public int getPid() {
  return pid;
 }
 public void setPid(int pid) {
  this.pid = pid;
 }
 
 public Roleinfo getRole() {
  return role;
 }
 public void setRole(Roleinfo role) {
  this.role = role;
 }
 public int getRootId() {
  return rootId;
 }
 public void setRootId(int rootId) {
  this.rootId = rootId;
 }
 public String getCreatetime() {
  return createtime;
 }
 public void setCreatetime(String createtime) {
  this.createtime = createtime;
 }
 public String getUpdateTime() {
  return updateTime;
 }
 public void setUpdateTime(String updateTime) {
  this.updateTime = updateTime;
 }
 
}

 

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class
    name="pojo.Operator"
    table="operatorinfo"
    lazy="false"
>
    <id
        name="id"
        type="integer"
        column="OperatorId"
        length="10"
    >
     <generator class="increment"></generator>
    </id>
   
    <property
        name="name"
        type="string"
        column="operatorName"
        length="20"
    />
    <property
        name="password"
        type="string"
        column="password"
        length="20"
    />
    <property
        name="createtime"
        type="string"
        column="createtime"
        length="50"
    />
    <property
        name="updateTime"
        type="string"
        column="UpdateTime"
        length="50"
    />
    <property
        name="local"
        type="string"
        column="local"
        length="100"
    />
 <property name="pid"
 column="pid"
 type="integer"
 length="10">
 </property>
 
 <property name="rootId"
 column="rootId"
 type="integer"
 length="10">
 </property>
 
 <property name="MessageCenterType"
 column="MessageCenterType"
 type="string"
 length="20">
 </property>
 <property name="status"
 column="status"
 type="string"
 length="4">
 </property>
 <property name="createIp"
 column="CreateIP"
 type="string"
 length="100">
 </property>
 
 <many-to-one name="role"
 column="roleId"
 
  cascade="all"
 class="pojo.Roleinfo"
 
 >
  
 </many-to-one>
    <!-- Associations -->

</class>
</hibernate-mapping>

 

package pojo;

import java.util.Set;

public class Roleinfo {
 private int id;
 private String roleName;
 private String roleDesc;
 private Set<Module> modules;
 private Set<Operator> operators;
 public Set<Operator> getOperators() {
  return operators;
 }
 public void setOperators(Set<Operator> operators) {
  this.operators = operators;
 }
 public Set<Module> getModules() {
  return modules;
 }
 public void setModules(Set<Module> modules) {
  this.modules = modules;
 }
 public String getRoleDesc() {
  return roleDesc;
 }
 public void setRoleDesc(String roleDesc) {
  this.roleDesc = roleDesc;
 }
 public String getRoleName() {
  return roleName;
 }
 public void setRoleName(String roleName) {
  this.roleName = roleName;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }

 
}

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
    name="pojo.Roleinfo"
    table="roleinfo"
    lazy="false"
    dynamic-insert="true"
    dynamic-update="true"
>
    <id
        name="id"
        type="integer"
        column="roleid"
        length="10"
        unsaved-value="0"
    >
        <generator class="increment" />
    </id>
    <property
        name="roleName"
        type="string"
        column="RoleName"
        length="20"
    />
   
    <property
        name="roleDesc"
        type="string"
        column="roleDesc"
        length="4000"
    />
 <set name="modules"
  table="role2module"
  inverse="false"
   lazy="false"
    cascade="all">
 <key column="roleId"></key>
 <many-to-many class="pojo.Module"
  column="moduleId" outer-join="auto"> 
 </many-to-many>
 </set>
 <set name="operators"
 table="operatorinfo"
 inverse="true"
 cascade="all"
 lazy="false"
 >
  <key column="RoleId"></key>
  <one-to-many
  class="pojo.Operator"
  />
 </set>
</class>
</hibernate-mapping>

 

 

 

public String deleteRole(String[] ids) {
  String s = "0";
  Session session = super.getSession(true);
  try {
   for (int i = 0; i < ids.length; i++) {
    //session.delete(findById(Integer.parseInt(ids[i])));
    /**
     * session.get(Class class,int id)
     */
    Roleinfo role = (Roleinfo)session.get(Roleinfo.class, Integer.parseInt(ids[i]));
    Set<Operator> set = role.getOperators();
    for (Iterator iter = set.iterator(); iter.hasNext();) {
     Operator o = (Operator) iter.next();
     session.delete(o);
     role.getOperators().remove(o);
     role.getOperators().clear();
     //role.getOperators().remove(o);
    }
    
    //role.getOperators().clear();
    session.delete(role);
    
   }
   s = "1";
  } catch (Exception e) {
   
  }
  
  
  return s;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值