package org.hibernate.test;public class T1 {
private int id;
private T2 t2;

public T1() {}

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public T2 getT2() {
return t2;
}
public void setT2(T2 t2) {
this.t2 = t2;
}

public void test() {
T1 t1 = new T1();
t1.getT2().setId(110);
}
public static void main(String[] args) {
T1 t1 = new T1();
t1.test();
}
}package org.hibernate.test;public class T2 {
private int id; public T2() {}

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static void main(String[] args) {
T2 t2 = new T2();
System.out.println(t2.getId());
}
}
执行T1的时候后台报了这个错

解决方案 »

  1.   

    t1.getT2()返回的肯定是null了。
      

  2.   

    你要在T1中先set一个T2的对象 才能getT2 不然人家都没有得到T2对象 当然是NullPointException啦
      

  3.   

    你hibernate配错了,配上预抓lazy="false"
      

  4.   

    hibernate的联查策略是你不设置延迟加载默认为lazy="true"。你要在查T1时在其中加载关联表T2。就必须指定T1中T2实体的预加载。
    <many-to-one name="holiday" class="com.basedatas.workday.db.Holiday" fetch="select" lazy="false">
                <column name="HOLIDAYID" not-null="true" />
            </many-to-one>
    类似以上,具体你查一下hibernate相关文档关于联查的内容。
      

  5.   


    package org.hibernate.test;public class T1 {
    private int id;
    private T2 t2;

    public T1() {}

    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public T2 getT2() {
    return t2;
    }
    public void setT2(T2 t2) {
    this.t2 = t2;
    }

    public void test() {
    T1 t1 = new T1();
    t1.setT2(t2);//  <----------------------------------------------------添加了这句,不知道是不是这个意思
    t1.getT2().setId(110);
    }
    public static void main(String[] args) {
    T1 t1 = new T1();
    t1.test();
    }
    }依然报的空指针错误……
      

  6.   

    t2没有被初始化,你把一个NULL值给T2
      

  7.   

     t1.setT2(t2);改成 t1.setT2(new T2()); 或者t2 = new T2();
      

  8.   

    没new T2对象,搞来搞去操作的都只是引用
      

  9.   


    package org.hibernate.test;public class T1 {
    private int id;
    private T2 t2;

    public T1() {}

    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public T2 getT2() {
    return t2;
    }
    public void setT2(T2 t2) {
    this.t2 = t2;
    }

    public static void main(String[] args) {
    T1 t1 = new T1();
    t1.setT2(new T2());//<---------------------------------我删除了test方法,然后改成这样,是这个意思吗?
    t1.getT2().setId(110);
    }
    }
      

  10.   

    package org.hibernate.test;public class T1 {
        private int id;
        private T2 t2;
        
        public T1() {}
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public T2 getT2() {
            return t2;
        }
        public void setT2(T2 t2) {
            this.t2 = t2;
        }
        
        public void test() {
            T1 t1 = new T1();
            t1.setT2(new T2());
            t1.getT2().setId(110);
            System.out.println( t1.getT2().getId());
        }
        public static void main(String[] args) {
            T1 t1 = new T1();
            t1.test();
        }
    }这样就可以了
      

  11.   

    谢谢12楼的回答。可是我的意思是要在T2类中打印出110。按照这样的写法,T2类中的id始终是0。
    T2类就是这个:package org.hibernate.test;public class T2 { /**
     * @param args
     */
    private int id; public T2() {}

    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    T2 t2 = new T2();
    System.out.println(t2.getId());
    }
    }
      

  12.   

    两个类里面都运行独立的main方法。。new出来的对象都是不一样的,应该要这样~
    package com.snail.test;public class T1 {
        private int id;
        private T2 t2;
        
        public T1() {}
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public T2 getT2() {
            return t2;
        }
        public void setT2(T2 t2) {
            this.t2 = t2;
        }
        
        public void test() {
           this.getT2().setId(110);
        }
    }
    package com.snail.test;public class T2 {
        private int id;    public T2() {}
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
    }package com.snail.test;public class Test { public static void main(String[] args) {
    T1 t1 = new T1();
    T2 t2 = new T2();
    t1.setT2(t2);
    t1.test();
    System.out.println(t2.getId());
    }}