Проблема отложенной загрузки с отображением один в один - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть 2 очень простых POJO, и у меня есть только одно соответствие между ними.

  1. contact.java
  2. comment.java - в нем есть столбец внешнего ключа для contact.java

код, который я написал ниже.

contact.java

@OneToOne(optional= false,cascade = CascadeType.ALL, mappedBy="contact", fetch=FetchType.LAZY)
@org.hibernate.annotations.LazyToOne(org.hibernate.annotations.LazyToOneOption.NO_PROXY)
private Comment mComment;

comment.java

@OneToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL )
@JoinColumn(name="EW_CNTC_ID")
private Contact contact;

Я устанавливаю комментарий в контакт Pojo и, наконец, я сохраняю contact.java

если я сохраняю @OneToOne (необязательно = false, я получаю исключение dataintegrityexception, исключение constraintvoilation

если я изменил @OneToOne (необязательно = true, тогда он работает.

Я думаю, что если значение false, то оно пытается вставить контакт, оно находит комментарий, оно пытается вставить комментарий, но имеет ссылку на контакт, оно должно установить внешний ключ без вставки контакта, оно не может сохранить внешний ключ. , если опционально true, контакт может быть вставлен без комментария, а PK сгенерирован для контакта, и tat задается в столбце внешнего ключа контакта. В любом случае эта проблема решена.

еще одна вещь, которую я загружаю контакты, мне нужно лениво загружать комментарии, это не то, где работа может помочь кому-то в этом, мне строго нужна ленивая загрузка комментариев из-за проблем с производительностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 12 июля 2012

У нас есть эта проблема в hibernate 3. Hibernate 4 исправил эту проблему.

Если вы хотите загружать только контакты, а не комментарии, попробуйте вот так (подразумевается, что измените на многотонное отношение).

@ManyToOne(fetch=FetchType.LAZY)
private Comment mComment;
...