什么乱七八糟的东西,getHibernateTemplate().delete(aa)中的delete的要是数据库对象,cascade标识是否级联,如果级联是删除,查询,等等,中的哪个。outer-join是外联合。你还是自己看看文档了。

解决方案 »

  1.   

    下面的casecade什么的可以先放一放,问题是
    String aa="from Emp as aa where aa.dept.deptno>"+dept.getDeptno();
    int j=getHibernateTemplate().delete(aa); 
    执行这个发生制约性错误,当然也有解决办法,如被注释的代码.问题是这个效率很低,有什么可行的办法可以解决这个问题?
      

  2.   

    到底是int j=getHibernateTemplate().delete(aa);发生制约性错误还是
    getHibernateTemplate().delete(dept);发生制约性错误?
    既然List list=getHibernateTemplate().find("from Emp");
    Iterator it=list.iterator();
    while(it.hasNext()){
    Emp dd=(Emp)it.next();
    if((null!=dd.getDept())&&(dd.getDept().getDeptno()==dept.getDeptno()))
    getHibernateTemplate().delete(dd);
    }
    没有错误,那么int j=getHibernateTemplate().delete(aa);也不会错的
    从String aa="from Emp as aa where aa.dept.deptno>"+dept.getDeptno();来看你删掉的不是当前这个部门的emp,而在后面你又getHibernateTemplate().delete(dept);在前面又设置了关联emp.setDept(dept);使用你注释掉的那段代码显然是删掉了当前的dept
    把String aa="from Emp as aa where aa.dept.deptno>"+dept.getDeptno();改成
    String aa="from Emp as aa where aa.dept.deptno="+dept.getDeptno();看看
      

  3.   

    在oracle里把相应表的级联删除打开
      

  4.   

    Emp emp=new Emp();
    emp.setDept(dept);
    String aa="from Emp as aa where aa.dept.deptno>="+dept.getDeptno();
    int j=getHibernateTemplate().delete(aa);
    System.out.println("*********"+j+"***********");
    aa="from Dept as dept where dept.deptno="+dept.getDeptno();
    int i=getHibernateTemplate().delete(aa);
      

  5.   

    各位老大还是出马的,万分感谢。上代码基本解决了问题。 next关联删除,是如这里自己手动一次删除几个表,还是在oracle端设置删除接连?这个关系是体现在代码上的,还是体现在数据库设计的?上面,我一个动作删除两个表,这个思路正规不?
    next   hbm.xml文件里对时间型支持好像有问题,删除了时间型就一切ok
    <property name="hiredate" column="HIREDATE" type="java.util.Date" />  //timestamp也不对,数据库oracle9i,支持的市timestamp,但如果表自动生成的话,通过这个hbm.xml是不能生成的,hibernate 2.1.8相对应的是把这个型翻译成datatime,create table,数据型不支持,错误
      

  6.   

    能不能把你的 Spring 让我看看?学习学习!谢谢!
      

  7.   

    咚咚太大了点,主要是这个xml,参考
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    <bean id="propertyPlaceholderConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath:jdbc.properties</value>
    </list>
    </property>
    </bean> <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
    <value>${jdbc.driverClassName}</value>
    </property>
    <property name="url">
    <value>${jdbc.url}</value>
    </property>
    <property name="username">
    <value>${jdbc.username}</value>
    </property>
    <property name="password">
    <value>${jdbc.password}</value>
    </property>
    </bean> <bean id="sessionFactory"
    class="org.springframework.orm.hibernate.LocalSessionFactoryBean"
    abstract="false" singleton="true" lazy-init="default"
    autowire="default" dependency-check="default">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="mappingResources">
    <list>
    <value>spring/Dept.hbm.xml</value>
    <value>spring/Emp.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.dialect">
    ${hibernate.dialect}
    </prop>
    <prop key="hibernate.show_sql">
    ${hibernate.show_sql}
    </prop>
    <prop key="hibernate.jdbc.fetch_size">
    ${hibernate.jdbc.fetch_size}
    </prop>
    <prop key="hibernate.jdbc.batch_size">
    ${hibernate.jdbc.batch_size}
    </prop><!--
    <prop key="hibernate.hbm2ddl.auto">
    create
    </prop>
    --></props> </property>
    </bean> <bean id="transactionManager"
    class="org.springframework.orm.hibernate.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref local="sessionFactory" />
    </property> </bean>
    <bean id="userDAO" class="spring.UserDAO">
    <property name="sessionFactory">
    <ref local="sessionFactory" />
    </property>
    </bean> <bean id="intercept"
    class="org.springframework.orm.hibernate.HibernateInterceptor">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="UserManager"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref bean="transactionManager" />
    </property>
    <property name="target">
    <ref local="userDAO" />
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="insert*">
    PROPAGATION_REQUIRED,-SQLException
    </prop>
    <prop key="delete*">
    PROPAGATION_REQUIRED,-SQLException
    </prop>
    <prop key="update*">
    PROPAGATION_REQUIRED,-SQLException
    </prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    <property name="preInterceptors">
    <list>
    <ref local="intercept" />
    </list>
    </property>
    <property name="postInterceptors">
    <list>
    <ref local="intercept" />
    </list>
    </property>
    </bean>
    <bean id="txProxyTemplate" abstract="true"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref bean="transactionManager" />
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="insert*">
    PROPAGATION_REQUIRED,-SQLException
    </prop>
    <prop key="delete*">
    PROPAGATION_REQUIRED,-SQLException
    </prop>
    <prop key="update*">
    PROPAGATION_REQUIRED,-SQLException
    </prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>
    </beans>
      

  8.   

    浩浩体会吧,这个市spring的核心文件,和你一一解释不现实
      

  9.   

    最后使用了oracle的删除接连,问题:oracle本身的删除接连是否是个事务操作??原子性怎么样?
    oracle的接连修改的触发器怎么写??是不是11i什么的接连修改已经内置了?