Hibernate One-To-One Adding child object automatically

Viewed 954

I want to add child object Automatically in DB using hibernate One to One relationship. With following code Its not adding foreign key in Address Table.

public class Address implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "address")
    private String address;
    @OneToOne(cascade = CascadeType.ALL) 
    @PrimaryKeyJoinColumn(name = "p_id", referencedColumnName = "id")
    private Person pId;

    Getters And Setters
}

public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "birthdate")
    @Temporal(TemporalType.TIMESTAMP)
    private Date birthdate;
    @Column(name = "email")
    private String email;
    @Column(name = "mobile")
    private BigInteger mobile;
    @Column(name = "name")
    private String name;
    @OneToOne(mappedBy = "pId", cascade = CascadeType.ALL)
    private Address address;

    Getters And Setters
}

Here is the Main Method

public static void main(String[] args) 
    {
        try
        {
            Configuration configuration = new Configuration().configure(HibernateUtil.class.getResource("/hibernate.cfg.xml"));
            StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
            serviceRegistryBuilder.applySettings(configuration.getProperties());
            ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
            Session session = sessionFactory.openSession();
            Transaction transaction = session.beginTransaction();
            Person person = new Person();
            person.setBirthdate(new Date());
            person.setEmail("hjhjhjhj@gmail.com");
            person.setMobile(new BigInteger("44444444"));
            person.setName("kjkljkljkj");
            Address address = new Address();
            address.setAddress("jkhkjhkj");
            address.setPId(person);
            person.setAddress(address);
            session.save(person);
//            session.save(address);
            transaction.commit();
            session.flush();
            session.close();
            System.out.println("Success...");
        }
        catch(Exception e)
        {
            e.printStackTrace(System.out);
        }
    }
1 Answers
Related