2013-08-29 19 views
0

Я новичок в спящем режиме.
У меня есть два класса UserDetails и address.The соотношение между этими двумя взаимно-Many.The детали следующим образом (Skiping геттер и сеттеры)
UserDetails.java
Добавление NULL в базу данных

@Entity 
@Table(name = "UserDetails") 
public class UserDetails { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "userId") 
    private int userId; 

    @Column(name = "UserName") 
    private String userName; 

    @OneToMany 
    @JoinColumn(name = "address") 
    private Collection<Address> address = new ArrayList<Address>(); 
} 

Address.java

@Entity 
@Table(name = "address") 
public class Address { 
    @Id 
    @GeneratedValue 
    @Column(name = "id") 
    private int id; 
    @Column(name = "city") 
    private String city; 
} 

App.java

UserDetails ud=new UserDetails(); 
ud.setUserName("User 1"); 

Address ad1=new Address(); 
ad1.setCity("Mumbai"); 

Address ad2=new Address(); 
ad1.setCity("Pune"); 

ud.getAddress().add(ad1); 
ud.getAddress().add(ad2); 

Session session=factory.openSession(); 
session.beginTransaction(); 
session.save(ud); 
session.save(ad1); 
session.save(ad2); 


session.getTransaction().commit(); 
session.close(); 

Именем hibernate.cfg.xml собственности = "hbm2ddl.auto" установлено обновление после запуска выше кода записи в базе данных

UserDetails Таблица

userId  UserName  Address 
1   User 1  NULL 

Адрес Таблица

Id  City Address 
1  Pune 1 
2  NULL 1 

Мой вопрос: почему hibernate вставляет в UserDetails адрес = NULL и City = NULL в адресной таблице вместо создания новой таблицы.

ответ

0
Address ad2=new Address(); 
ad1.setCity("Pune"); 

Вы настраиваете город pune в address1, вместо address2 попытаться изменить его как

Address ad2=new Address(); 
    ad2.setCity("Pune"); 

UPDATE

вашей таблице пользователей Adrees столбец является нулевым, поскольку нет отображается поле в вашем pojo для адреса, так или иначе ваш способ построения схемы базы данных ошибочно реализует onetomany отношения. Пожалуйста, проверьте здесь One to Many Hibernate для правильного пути

+0

Спасибо за ошибку, но она по-прежнему показывает NULL в таблице UserDetails для столбца Address. – Niks

+0

@Niks. Ваша схема базы данных неправильно разработана для реализации отношения onetomany. Пожалуйста, проверьте обновление. – Siva

+0

. Ваш правый ноль возникла проблема с дизайном базы данных. Спасибо за ответ... – Niks

0

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "userId") 
private int userId; 

UserDetails Таблица

Id UserName Адрес 1 пользователя 1 NULL

Оба конфликта имя столбца столбцом идентификации различаются, должен быть идентификатор пользователя не id. Либо правильно в java-файле, либо в базе данных.

второй

Address ad2=new Address(); 
ad1.setCity("Pune"); 

это установит город ad1 не ad2. Но это не повлияет, пока в столбце города не будет нулевой отметки.

+0

Спасибо, что получил ошибку, но ее по-прежнему показывает NULL в таблице UserDetails для столбца Address.For «1st» у меня было имя столбца как userId в базе данных, так что это не проблема. – Niks

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