我有一个表有一个字段是bit类型,在表中的值是false,true;利用hibernate工具映射成了Byte类型;然后我要测试,将数据放到数据库里面去。请问如何插入数据:(如下面)Student表:
字段:isOk   类型: bit映射的POJO类:private Byte isOk;set/get方法就不写了。那么我写了一个插入数据测试类:
插入方法:public void testInsert(String ok){
    Student student = new Student();
    student.setIsOK(xxxxx);//setIsOK的参数是Byte类型,我就想用student.setIsOk(new Byte(name))去实现。这样子插入过去那么会在studnet对象中一个值。但是如何保证它会在数据库中生成false?
    session.save(student);
    session.beginTransaction().commit();
    //上面只是简写了一下。
}
在上面我插入数据如何对应false,或者true;我试过student.setIsOK(new Byte(""));想通过这样去插入数据得到false;但是跟踪的时候就报错了。请问我如何让数据库中得到为false和true;

解决方案 »

  1.   

    String与byte的相互转换是不可能的事情。
    byte类型只能表示[-128,127](或者[0,255],具体是多少忘了)之间的数字,只能通过int类型做中转表示ascii码在这个区间段内的char类型字符,而是不可能表示string类型的“false”值或者“true”的。
      

  2.   

    你最好是将isOk定义为boolean类型,然后重新定义isOk的get/set方法,在get/set方法中用if语句判断进行get和set。
      

  3.   

    刚查了下,数据库的bit类型对应java的boolean基础类型,将isOk定义为boolean类型,然后用默认的get/set方法就可以了,不再需要自己做转换了。
    boolean类型的值只有两个,ture、false,他们不是String类型的,不能与String类型直接转换。
      

  4.   


    你说得有道理。一开始我也是想修改POJO类,但是既然myeclipse生成工具会生成Byte类形,而不是Boolean类型,应该有它的道理吧。假如我不传过String,而是传过来int类型呢。应该怎么办?