Как обновить коллекцию в Hibernate? ⇐ JAVA
-
Гость
Как обновить коллекцию в Hibernate?
У меня есть объект под названием «Документ», который имеет отношение «один ко многим» с «DocumentPersonCc». Я пытаюсь изменить одну или несколько из этих коллекций в своем коде, но Hibernate не вызывает запрос на обновление, когда я этого ожидаю. Он вызывает запрос на обновление, когда я меняю одно из обычных полей (например, тему документа), но даже тогда он не сохраняет никаких изменений типа «один ко многим» в базе данных. Что мне нужно изменить, чтобы это заработало?
Получатель и установщик для DocumentPersonCc:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "документ") @LazyCollection(LazyCollectionOption.EXTRA) @Sort(тип = SortType.NATURAL, компаратор = DocumentPersonCc.class) public SortedSet getDocumentPersonCcs() { вернуть this.documentPersonCcs; } public void setDocumentPersonCcs( SortedSet documentPersonCcs) { this.documentPersonCcs = documentPersonCcs; } Обновить код:
публичный документ updateCcs(Документ) { Сеанс сеанса = HibernateUtil.getSessionFactory().getCurrentSession(); сеанс.beginTransaction(); Документ oldD = (Документ) session.load(Document.class, document.getId()); Hibernate.initialize(oldD.getDocumentPersonCcs()); oldD.setDocumentPersonCcs(document.getDocumentPersonCcs()); сеанс.обновление(oldD); session.getTransaction().commit(); документ = this.returnDocument(document.getId()); Hibernate.initialize(document.getDocumentPersonCcs()); возвратный документ; } Получатель и установщик документа DocumentPersonCc:
@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "DocumentsId", nullable = false, вставляемый = false, обновляемый = false) защищенный документ getDocument() { вернуть этот.документ; } public void setDocument(Документ) { этот.документ = документ; }
У меня есть объект под названием «Документ», который имеет отношение «один ко многим» с «DocumentPersonCc». Я пытаюсь изменить одну или несколько из этих коллекций в своем коде, но Hibernate не вызывает запрос на обновление, когда я этого ожидаю. Он вызывает запрос на обновление, когда я меняю одно из обычных полей (например, тему документа), но даже тогда он не сохраняет никаких изменений типа «один ко многим» в базе данных. Что мне нужно изменить, чтобы это заработало?
Получатель и установщик для DocumentPersonCc:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "документ") @LazyCollection(LazyCollectionOption.EXTRA) @Sort(тип = SortType.NATURAL, компаратор = DocumentPersonCc.class) public SortedSet getDocumentPersonCcs() { вернуть this.documentPersonCcs; } public void setDocumentPersonCcs( SortedSet documentPersonCcs) { this.documentPersonCcs = documentPersonCcs; } Обновить код:
публичный документ updateCcs(Документ) { Сеанс сеанса = HibernateUtil.getSessionFactory().getCurrentSession(); сеанс.beginTransaction(); Документ oldD = (Документ) session.load(Document.class, document.getId()); Hibernate.initialize(oldD.getDocumentPersonCcs()); oldD.setDocumentPersonCcs(document.getDocumentPersonCcs()); сеанс.обновление(oldD); session.getTransaction().commit(); документ = this.returnDocument(document.getId()); Hibernate.initialize(document.getDocumentPersonCcs()); возвратный документ; } Получатель и установщик документа DocumentPersonCc:
@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "DocumentsId", nullable = false, вставляемый = false, обновляемый = false) защищенный документ getDocument() { вернуть этот.документ; } public void setDocument(Документ) { этот.документ = документ; }
Мобильная версия