我有两个目标
public class Parent {
int id;
String name;
int Set<Child> children;
}
public class Child {
int id;
String name;
int parentId;
}
使用以下映射文件
<hibernate-mapping>
<class name="Parent" table="parent">
<id column="id" access="field">
<generator class="identity"/>
</id>
<property name="name" column="name" access="field" />
<set name="children" access="property" cascade="all" lazy="true" >
<key><column name="parent_id"/></key>
<one-to-many class="com.hp.autonomy.corepolicy.common.dto.LexiconExpression"/>
</set>
</class>
<class name="Child" table="child">
<id column="id" access="field">
<generator class="identity"/>
</id>
<property name="name" column="name" access="field" />
<property name="parentId" column="parent_id" access="field" not-null="true" />
</class>
</hibernate-mapping>
当我保存一个包含一个子项的父项时,生成的sql如下所示
Hibernate:插入到父(id,名称)值中(null,?)
Hibernate:插入子(id、父id、名称)值(null、、?)
Hibernate:更新子集父\u id=?其中id=?
似乎当hibernate插入孩子时,它会将parent_id设置为空,然后进行更新。这在我的数据库和Hibernate验证中引起了问题,因为模式说parent_id不能为空。
是否可以让第二条insert语句使用在插入父项时创建的父项id,而不是稍后出现并更新子项?
你需要改变
<property name="parentId" column="parent_id" access="field" not-null="true" />
通过
<many-to-one name="parent" class="change to the parent classname">
<column name="parent_id" not-null="true" access="field"/>
</many-to-one>
您将需要更改孩子
类,使其具有父
成员,而不是家长ID
,并相应地更新上面的配置。
问题内容: 我的数据库包含三个表叫,和。链接表仅包含两列,即对象记录的标识和数据记录的标识。 我想从链接到一个给定对象标识的位置复制数据,并在不同的给定对象标识中插入相应的记录。 我 可以 通过选择一个表变量,并为每次迭代进行两次插入来循环执行此操作。 这是最好的方法吗? 编辑 :我想避免循环的原因有两个,第一个是我很懒,并且循环/临时表需要更多的代码,更多的代码意味着有更多的地方出错,第二个原因
问题内容: 我在Android应用程序中将Dagger2用于DI。我发现我必须为使用@Inject字段的每个类编写注入方法。有没有一种方法可以只注入父类,而不必在每个子类上调用inject?以活动为例。我有一个“ 每个活动都从中延伸”的内容。有没有一种方法,我可以在BaseActivity的组件中创建一个注入方法,然后在BaseActivity的onCreate中调用inject,子活动中的@in
问题内容: 只是想知道是否有可能以某种方式使CSS属性插入html代码而不是在上插入字符串或类似这样的元素: 这将非常方便…可以通过Javascript完成,但是使用CSS确实可以使生活更轻松:) 问题答案: 不幸的是,这是不可能的。根据规格: 生成的内容不会更改文档树。特别是,它不会反馈到文档语言处理器(例如,用于重新解析)。 换句话说,对于字符串值,这意味着始终按字面意义对待该值。无论使用哪种
我已经创建了纸张和Mcq问题之间的映射如下。 } 当我更新纸质实体时,它会删除所有MCQ。 SQL输出:
所以我有这段代码,但在我实际使用它之前,我无法知道函数需要多少参数 有没有可能修改这个函数,让它允许我插入我需要的参数?