2015-12-09 1 views
2

Я получаю сообщение об ошибке при попытке обновить список объектов, содержащих постоянный объект и отдельный объект, как (вновь созданный объект), в моем db, используя jpa2.0. Мой объект содержит внутренние органы, которые дают ошибку (упомянутый в названии) при объединении данных:Объединение нескольких представлений одного и того же объекта, Отдельно

Class superclass{ 
    private A a; 
    private string name; 

    //getter setters here... 
} 

Class A{ 
    private long id; 
    @onetoone(cascade=CascadeType.All, fetch=FetchType.Eager) 
    private B b; 
    @onetoone(cascade=CascadeType.All, fetch=FetchType.Eager) 
    private C c; 

    //getter setters here... 

} 


Class Dao{ 

    daoInsert(superclass x){ 

    em.merge(x); 

     } 
} 

Я хочу, чтобы любое лицо, отправленное на сохраняющиеся быть объединены в БД.

Hibernate не предусматривает решение, добавив следующее в persistence.xml

Есть ли что-то я могу сделать в JPA же, как спящий режим.

Пожалуйста, не предлагайте найти объект, использующий em.find(), а затем обновить вручную, так как мне нужны обеими объектами постоянный объект и вновь созданный объект. Также я использую весеннюю форму, чтобы сохранить весь патентный объект в db.

Прошу прощения, если я недостаточно ясен, это мой первый вопрос, и я действительно новичок.

Любая помощь будет оценена по достоинству.

+0

Нам нужна дополнительная информация, так как вы не указали, что именно вызывает проблему. Нам не следует угадывать, если и что вы вызываете daoInsert, и если объект, вызывающий проблему, является экземпляром A, B или C. В чем именно заключается ситуация, в которой вы получаете исключение, и почему у вас есть несколько отдельных экземпляров одного и того же объекта в вашей модели или списке? – Chris

+0

@Chris объект, вызывающий проблему, является b и c, я получаю ошибку только тогда, когда значение атрибута внутри C повторяется в следующей записи для A ... Эта ссылка, которую я упомянул для спящего режима, является именно той проблемой, которую я имею в jpa ... HTTPS://hibernate.atlassian.net/browse/HHH-9106 – Akash

+0

Также я вызываю DaoInsert для слияния списка сущностей, то есть, если сущность с совпадающим идентификатором существует, то она должна быть обновлена, и если никакой идентификатор соответствия , то новая запись должна быть создана в db. Будет ли это много информации? – Akash

ответ

2

нашел ответ на этот вопрос сам today.You просто нужно

удалить CascadeType.MERGE от лица, не позволяя вам оставаться снятую сущность.

Если вы используете CascadeType.ALL, то укажите весь тип каскада, отличный от CascadeType.MERGE.

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

  • Нет связанных вопросов^_^