作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类如下
class A{
Set<B> = new HashSet<B>();
}
class B{
A a;
}
现在A的主键是自动生成的,所以我不能在A或B之前设置它。B具有A的逆映射。并且B中的A对象最初为空。这映射到数据库中的2个表A和B。现在,如果我有一个对象A,其集合包含2条记录,那么当我保存对象A时,就会在B中创建2条记录。现在我的代码工作正常。但是当我看到记录时在B中我发现A对应的外键是空白的。这是怎么回事?
TABLE B structure
BId Aid Bname
//Aid是A表主键的外键,Aid存储为null,为什么会这样?我希望Aid应该自动存储在B中
最佳答案
您需要正确设置关系的双方
parentA.getBChilds().add(childB);
childB.setParentA(parentA); <-- Important see link below working bi
您可以在父级中创建链接管理方法来正确设置双方。
public class ParentA
{
...
public void addChildB(B pChild)
{
this.childsB.add(pChild);
pChild.setParentA( this );
}
...
}
将集合关系上的“inverse”属性设置为 true
<set name="bChilds" inverse="true">
<key column="bID"/>
<one-to-many class="childB"/>
</set>
也许您正在混合逆向和级联。要获得更好的解释,您可以阅读有关 hibernate inverse attribute Hibernates bizarre interpretation of inverse ;) 的博客文章以及 Working bi-directional links 上的这个 hibernate 文档
关于java - hibernate中级联保存,外键保存为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775305/
我是一名优秀的程序员,十分优秀!