Возможно ли определить объект по умолчанию внутри элемента SET в HBM?

#java #hibernate #hibernate-mapping #hbm

#java #переход в спящий режим #переход в спящий режим-отображение #hbm

Вопрос:

допустим, у меня есть сопоставление набора в родительском файле hbm:

     <set cascade="all" inverse="true" lazy="false" name="children">
       <key column="parentChildId" foreign-key="fk_fk" not-null="true" on-   
         delete="cascade"/>
     <one-to-many class="Child" not-found="ignore"/>
   </set> 
  

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

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

Я ценю всю помощь.

Спасибо

Ответ №1:

Что вы подразумеваете под «сервером»? Вы имеете в виду сервер базы данных? Если это так, то нет способа создать родительский элемент и дочерний элемент в одном операторе SQL. Но Hibernate использует пакетные обновления, поэтому он должен быть очень эффективным.

Если вы имеете в виду «сервер приложений», то это звучит как функциональная проблема, а не техническая. Измените свой родительский метод создания, чтобы он одновременно создавал дочерний. Вы могли бы даже сделать это, используя фабричный метод в родительском классе :

 public class Parent {
    public static Parent createParentWithDefaultChild() {
        Parent p = new Parent();
        p.addChild(new Child());
        return p;
    }
    // ...
}
  

Комментарии:

1. Нет, я не имел в виду сервер базы данных, я имел в виду сервер приложений, как вы сказали во втором пункте. ХОРОШО, спасибо за ответ, я понимаю, что это можно было бы сделать так, но просто для подтверждения, это невозможно сделать в HBM?

2. Нет, это невозможно. Файлы HBM используются для определения сопоставлений, а не функциональных правил.