【问题标题】:Is it possible to define default object inside a SET element in HBM?是否可以在 HBM 的 SET 元素内定义默​​认对象?
【发布时间】:2011-04-12 14:01:38
【问题描述】:

假设我在父 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> 

是否有可能在 Parent hbm 中定​​义一个默认子节点,即当创建父节点时,会在该集合中添加一个子节点????

我知道这听起来很奇怪,但由于一些性能问题,我必须尝试创建对服务器的最少调用(这里一个是保存父级,另一个调用是保存默认子级)。

感谢所有帮助。

谢谢

【问题讨论】:

    标签: java hibernate hibernate-mapping hbm


    【解决方案1】:

    “服务器”是什么意思?你是说数据库服务器吗?如果是这样,那么就无法在一个 SQL 语句中创建父级和子级。但是Hibernate使用的是批量更新,所以效率应该很高。

    如果您的意思是“应用程序服务器”,那么这听起来像是一个功能问题,而不是技术问题。更改您的父级创建方法,使其同时创建一个子级。您甚至可以使用父类中的工厂方法来做到这一点:

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

    【讨论】:

    • 不,我不是指数据库服务器,我指的是应用程序服务器,就像你在第二点所说的那样。好的thanx回复,我知道可以这样做,但只是为了确认,不能在HBM中完成?
    • 不,不能。 HBM 文件用于定义映射,而不是功能规则。
    猜你喜欢
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多