2016-05-23 4 views
-3

Я пытаюсь использовать приложение в Hibernate для реализации объединения hibernate one-to-one посредством аннотаций. Я использую два класса POJO и связываю их друг с другом, но при выполнении я сталкиваюсь с этой проблемой.Hibernate сопоставление один к одному по аннотациям

Код: У меня 2 класса Студент, Адрес. Мне нужно двунаправленное отображение 1-1 между обоими.

@Entity 
    @Table(name = "STUDENT") 
    public class Student { 

     @Id 
     @GeneratedValue 
     @Column(name = "STUDENT_ID") 
     private long id; 

     @Column(name = "FIRST_NAME") 
     private String firstName; 

     @OneToOne(mappedBy="student", cascade = CascadeType.ALL) 
     private Address address; 

     ----getters and setters--- 
    } 

    @Entity 
    @Table(name = "ADDRESS") 
    public class Address { 

     @Id 
     @Column(name="ADDRESS_ID") 
     @GeneratedValue(generator="gen") 
     @GenericGenerator(name="gen", strategy="foreign",[email protected](name="property", value="student")) 
     private long id; 

     @Column(name = "STREET") 
     private String street; 

     @Column(name = "CITY") 
     private String city; 

     @Column(name = "COUNTRY") 
     private String country; 

     @OneToOne 
     @PrimaryKeyJoinColumn 
     private Student student; 

     ----getters and setters--- 
    } 

Ниже мой пример основной класс

public class MainClass1 { 
     public static void main(String[] args) { 
      Session session = HibernateUtil.getSessionFactory().openSession(); 
      Student student = new Student("Sam","Disilva","Maths"); 
      Address address = new Address("10 Silver street","NYC","USA"); 
      student.setAddress(address); 
      session.save(address); 
      session.save(student); 

      session.getTransaction().commit(); 
      HibernateUtil.shutdown(); 
     } 
    } 

Исключение трассировки:

Initial SessionFactory creation failed.java.lang.NullPointerException 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.learn.main.HibernateUtil.buildSessionFactory(HibernateUtil.java:15) 
    at com.learn.main.HibernateUtil.<clinit>(HibernateUtil.java:8) 
    at com.learn.main.MainClass1.main(MainClass1.java:17) 
Caused by: java.lang.NullPointerException 
    at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:135) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1127) 
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1283) 
    at com.learn.main.HibernateUtil.buildSessionFactory(HibernateUtil.java:12) 
    ... 2 more 
+0

Пожалуйста, введите код. –

+0

И добавить заявление о проблеме тоже ... – meskobalazs

+0

Добавлен код на мой вопрос выше – Ajay

ответ

0

Во-первых, попытаться изменить @OneToOne отображение на Address части.

@Entity 
@Table(name = "ADDRESS") 
public class Address { 

    @OneToOne 
    @JoinColumn(name = "fk_student") 
    private Student student; 

} 
Смежные вопросы