让我有实体A
和实体B
。实体与A
有@OneToOne
关系B
。
我想下一步:
如果我删除A,那么也必须删除B。
如果我删除B,那么A也不会删除。
我必须在哪个实体中设置
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
我必须在哪一边
@OneToOne(cascade = {CascadeType.ALL})
?
从A到B的级联应该放在B
类引用的字段上A
,从B到A的级联应该放在A
类引用的字段上B
。
public class A {
@OneToOne(cascade = {CascadeType.ALL})
B b;
}
应该在课堂上A
,因为您希望每个动作都可以级联B
。
public class B {
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
A a;
}
应该在课堂上B
,因为您只希望级联某些操作A
我使用此实体表示具有自关系的类别系统,以获取子类别: 问题是当我想删除一个有子类别的类别时。我想删除所有子类别,但Java会删除此异常: 无法删除或更新父行:外键约束失败(,约束外键()引用) 我试图改变一些东西,如孤儿移除=真或级联=CascadeType。删除或尝试将级联放在单独的注释中,但不起作用。 我最后的希望是手动递归删除类别child,但这不是正确的方法。 提前感谢:)
问题内容: 我正在使用JPA 2.0并hibernate。我有一个用户类和一个组类,如下所示: 然后,我创建一个用户和组,然后将该用户分配给该组。 我要拥有的是删除组时(当然),该组将被删除,并且该组具有的所有用户-组关系将从USER_GROUP连接表中自动删除,但用户本身不会从USER表。 使用上面的代码,当我删除组时,只有GROUP表中的行将被删除,并且用户在USER_GROUP连接表中仍然具
问题内容: 我对级联=“删除”的工作方式感到困惑。我在“城市”映射文件中以以下方式定义了映射: 类客户具有类城市的外键。 因此,当我运行时: 是否还应该删除所有客户端,还是必须以某种方式处理它?我是否将查询作为方法参数正确传递给会话的delete()方法?谢谢你的帮助。最好的问候,混蛋。 问题答案: 我对cascade =“ delete”的工作方式有些困惑(…) 级联操作意味着,如果您是父母,则
我有一些关于“级联”的问题,在我的项目中,我有类别类,每个类可以是父类或子类。但我在同一个类中定义了哪一个是父母还是孩子。父母和孩子之间存在一对多的关系。这是我的实体类 我的问题是;当我删除子类别时,它的成功并没有问题。如果父类别有子类别,则无法删除父类别。 错误消息; Servlet.service()的servlet[调度Servlet]在上下文中与路径[]抛出异常[请求处理失败;嵌套异常or
嗯,我读了几个问题(这里和其他网站)关于类级验证与Hibernate,我创建了注释和验证类,但当验证返回false,我得到一个异常(当验证返回true它的确定)类是无效的(显然是因为验证返回false),我的疑问是:它不是也返回验证消息吗?为什么返回异常代码: ValidBlock.java ValidBlockValidator。JAVA 我做了测试,我很确定我收到了Block对象,因为当验证返
问题内容: 我在我的数据库3个表:,和 学生可以有多个课程,课程可以有多个学生。和之间存在多对多关系。 我为我的项目和课程添加了3个案例。 (a)当我添加用户时,它会保存得很好, (b)当我为学生添加课程时,它会在-预期行为中创建新的行。 (三)当我试图删除学生,则在删除适当的记录和,但它也删除其中不需要的记录。即使课程中没有任何用户,我也希望课程在那里。 下面是我的表和注释类的代码。 这是Hib