Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103026
  • 博文数量: 60
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-09 12:19
文章分类

全部博文(60)

文章存档

2015年(3)

2014年(41)

2013年(16)

我的朋友

分类: Java

2014-05-23 11:20:12

其实不是脏数据,而是hibernate的问题,我昨天花了还几个小时搞这个,其实是这样的,是hibernate在使用createquery拿数据是就产生错误,我最后将createquery改成createSQlquery()这个方法,调用,同时使用的是sql语句进行删和查寻操作,大家会想为什么没有增加和修改呢?
因为我的增加和删除都是使用的是对象,而不是联合主键,
还有再使用sql查询的时候,查询的数据,是一个对象(object),通过query拿到,然后转化为一个list,在这个list中也是一个对象的二维数组,
在拿值的时候,再将对象转化为对应的类就好了,但是这个转化的过程还是有小问题的,String好转,这个转化还是看我的上一篇博文关于
object转化为int
        但是在转化的时候这个对象是一个二维数组,不能使用迭代器的,这样会丢失数据,只能使用一个循环对象的项分别输出。具体看如下代码

package com.xiyou.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.xiyou.dao.po.Courseinfo;
import com.xiyou.dao.po.Manager;
import com.xiyou.dao.po.Teacher;
import com.xiyou.dao.po.TeacherCourse;
import com.xiyou.dao.po.TeacherCourseId;

public class TeacherCourseDao {

    DaoSessionfactory daosf = new DaoSessionfactory();
    SessionFactory sf = daosf.createsf();
public void addTeacherCourse(TeacherCourse tea_cou){
    try {
        Session session = sf.openSession();
        session.beginTransaction();
        //System.out.println(session.isOpen());
        session.save(tea_cou);
        session.getTransaction().commit();
        session.close();
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("保存失败!");
        e.printStackTrace();
    }
}
public List findallTeacherCourse(){
    List list = new ArrayList();
    List list1 = new ArrayList();
    try {
    Session session = sf.openSession();
    session.beginTransaction();
    /*Criteria criteria = session.createCriteria(TeacherCourse.class);*/
    System.out.println("+++++++++++++++++++++++++++++++++++++++++++++");
    //String hql = "from TeacherCourse";
     TeacherDao teadao = new TeacherDao();
        Teacher tea = new Teacher();
        CourseinfoDao coudao = new CourseinfoDao();
        Courseinfo cou = new Courseinfo();
    String hql = "select * from teacher_course";
    Query query = session.createSQLQuery(hql);
    list = query.list();
    
    //在从数据库中拿到对象之后转化为Iterator是就会产生数据丢失
    /*for (Iterator item = list.iterator();item.hasNext();){
      
          System.out.println(item.next());
        
        Object[] le = (Object[])item.next();
        String teaid = (String)le[0];
        String couid = (String)le[1];
        String week = (String)le[2];
        String period = (String)le[3];
        int cplan = 10;
        try {
             cplan = Integer.decode(String.valueOf(le[4])); //无法转化为int
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.out.println("jjkjkjkjkjkjkjkjkjkjkjkjkjkkjkjkjkkjkjkkjkjkjkjkj"+cplan);
        //int cplan = (int)(String.valueOf(le[4]));//无法转化为int
        TeacherCourse teacou=new TeacherCourse();
        tea = teadao.findByid(teaid);
        cou =coudao.findByid(couid);
        teacou.setId(new TeacherCourseId(tea.getTea_no(),cou.getCou_no()));
        teacou.setCou_cou(cou);
        teacou.setTea_cou(tea);
        teacou.setTea_cou_cplan(cplan);
        teacou.setTea_cou_period(period);
        teacou.setTea_cou_weekdays(week);
        list1.add(teacou);
      
      } */
    for (int i=0;i         System.out.println(list.get(i));
        
        Object[] le = (Object[]) list.get(i);
        String teaid = (String)le[0];
        String couid = (String)le[1];
        String week = (String)le[2];
        String period = (String)le[3];
        int cplan = 10;
        try {
            cplan = Integer.decode(String.valueOf(le[4]));//可以转码8,10,16进制
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.out.println("jjkjkjkjkjkjkjkjkjkjkjkjkjkkjkjkjkkjkjkkjkjkjkjkj"+cplan);
        //int cplan = (int)(String.valueOf(le[4]));//无法转化为int
        //int cplan = Integer.parseInt(String.valueOf(le[4]));无法转化为int
        //int cplan1 = Integer.valueOf(String.valueOf(le[4]));可以转码
        //int cplan = Integer.decode(String.valueOf(le[4])); 可以转码10进制
        //System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"+cplan1);
        TeacherCourse teacou=new TeacherCourse();
        tea = teadao.findByid(teaid);
        cou =coudao.findByid(couid);
        teacou.setId(new TeacherCourseId(tea.getTea_no(),cou.getCou_no()));
        teacou.setCou_cou(cou);
        teacou.setTea_cou(tea);
        teacou.setTea_cou_cplan(cplan);
        teacou.setTea_cou_period(period);
        teacou.setTea_cou_weekdays(week);
        list1.add(teacou);
    }
    
    /*String hql = "select {teacher_course.*} from teacher_course";
    Query query = session.createSQLQuery(hql).addEntity("teacher_course", TeacherCourse.class);
    list = query.list();*/
    //Query query = session.createSQLQuery(hql);
//    list = query.list();
    
    
    
    /*
     String hql = "select * from teacher_course";
     TeacherDao teadao = new TeacherDao();
    //Teacher tea = new Teacher();
    CourseinfoDao coudao = new CourseinfoDao();
    //Courseinfo cou = new Courseinfo();
    ResultSet rs=(ResultSet) session.createSQLQuery(hql);;
    try {
        while(rs.next()){
            TeacherCourse teacou=new TeacherCourse();
            teacou.setId(new TeacherCourseId(rs.getString("tea_cou"),rs.getString("cou_cou")));
            teacou.setCou_cou(coudao.findByid(rs.getString("cou_cou")));
            teacou.setTea_cou(teadao.findByid(rs.getString("tea_cou")));
            teacou.setTea_cou_cplan(rs.getInt("tea_cou_cplan"));
            teacou.setTea_cou_period(rs.getString("tea_cou_period"));
            teacou.setTea_cou_weekdays(rs.getString("tea_cou_weekdays"));
            list.add(teacou);
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }*/
    
    
    //list.iterator();
    //list = session.createQuery("select * from TeacherCourse").list();    
    session.getTransaction().commit();
    session.close();
    } catch (HibernateException e) {
        // TODO: handle exception
        System.out.println("未找到!");
        e.printStackTrace();
    }
    return list1;
}
public List findBycouId(String couId){
    List list = new ArrayList();
//    TeacherCourse tea_cou = new TeacherCourse();
        try {
        
            Session session = sf.openSession();
            session.beginTransaction();
            String hql = "from TeacherCourse as tea_cou where tea_cou.cou_cou.cou_no = ?";
            Query query = session.createQuery(hql);
            query.setString(0, couId);
            list= query.list();    //返回的是一个集合
            //tea_cou = list.get(0);
            session.getTransaction().commit();
            session.close();
    
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("根据姓名未找到");
            e.printStackTrace();
        }
    return list;
}
public List findByteaId(String teaId){
    List list = new ArrayList();
//    TeacherCourse tea_cou = new TeacherCourse();
        try {
        
            Session session = sf.openSession();
            session.beginTransaction();
            String hql = "from TeacherCourse as tea_cou where tea_cou.tea_cou.tea_no = ?";
            Query query = session.createQuery(hql);
            query.setString(0, teaId);
            list= query.list();    //返回的是一个集合
            //tea_cou = list.get(0);
            session.getTransaction().commit();
            session.close();
    
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("根据姓名未找到");
            e.printStackTrace();
        }
    return list;
}
public     void delById(TeacherCourseId id){
    TeacherCourse tea_cou = new TeacherCourse();
    
    try {
        Session session = sf.openSession();
        session.beginTransaction();
        //tea_cou = (TeacherCourse) session.get(TeacherCourse.class, id);
        //System.out.println("======================================");
        //System.out.println(tea_cou.getTea_cou_weekdays());
        
        String sql = "delete from teacher_course where teacher_course.tno='"+id.getTno()+"' and "+"teacher_course.cno='"+id.getCno()+"'";
       System.out.println("==================================================================================");
       Query query = session.createSQLQuery(sql);
        int row = query.executeUpdate();
        System.out.println("Delete user books remove count : " + row);
        
        
        //String hql = "from TeacherCourse as tea_cou where tea_cou.tea_cou.tea_no = ?";
        //session.delete(tea_cou);
        session.getTransaction().commit();
        session.close();
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("未删除!");
        e.printStackTrace();
    }
}

public     TeacherCourse findById(TeacherCourseId id){
    TeacherCourse teacou = new TeacherCourse();
    try {
        Session session = sf.openSession();
        session.beginTransaction();
        //tea_cou = (TeacherCourse) session.get(TeacherCourse.class, id);
        String sql = "select * from teacher_course where teacher_course.tno='"+id.getTno()+"' and "+"teacher_course.cno='"+id.getCno()+"'";
        Query query = session.createSQLQuery(sql);
    //     tea_cou = (TeacherCourse)session.createSQLQuery(sql);
       List list= query.list();
        Object[] obj = (Object[])list.get(0);
        TeacherDao teadao = new TeacherDao();
        Teacher tea = new Teacher();
        CourseinfoDao coudao = new CourseinfoDao();
        Courseinfo cou = new Courseinfo();
        String week = (String)obj[2];
        String period = (String)obj[3];
        int cplan = 10;
        try {
            cplan = Integer.decode(String.valueOf(obj[4]));//可以转码8,10,16进制
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        try {
            tea = teadao.findByid(id.getTno());
            cou =coudao.findByid(id.getCno());
            teacou.setId(new TeacherCourseId(tea.getTea_no(),cou.getCou_no()));
            teacou.setCou_cou(cou);
            teacou.setTea_cou(tea);
            
            teacou.setTea_cou_cplan(cplan);
            teacou.setTea_cou_period(period);
            teacou.setTea_cou_weekdays(week);
        } catch (Exception e) {
            // TODO: handle exception
        }
       
    //    int row = query.executeUpdate();
     //   System.out.println("Delete user books remove count : " + row);
        
        session.getTransaction().commit();
        session.close();
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("未找到!");
        e.printStackTrace();
    }
    return teacou;
}

public void updateTeacherCourse(TeacherCourse tea_cou){
    try {
        Session session = sf.openSession();
        session.beginTransaction();
        session.update(tea_cou);
        session.getTransaction().commit();
        session.close();
        } catch (Exception e) {
        // TODO: handle exception
        System.out.println("更新失败!");
        e.printStackTrace();
        }
    }
}


阅读(530) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~