- 24
- 0
创建HUSBAND表
CREATE TABLE HUSBAND (
ID INTEGER,
NAME VARCHAR2(10)
);
创建WIFE表
CREATE TABLE WIFE (
ID INTEGER,
NAME VARCHAR2(10)
);
HUABAND实体及Repository
@Entity
@Table(name = "HUSBAND", schema = "SYSTEM")
public class Husband {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@OneToOne
@Cascade({CascadeType.SAVE_UPDATE})
@PrimaryKeyJoinColumn
private Wife wife;
// 省略getter、setter及构造函数
}
public interface HusbandRepository extends JpaRepository<Husband, Integer> {
}
WIFE实体及Repositpry
@Entity
@Table(name = "WIFE", schema = "SYSTEM")
public class Wife {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@OneToOne
@PrimaryKeyJoinColumn
private Husband husband;
// 省略getter、setter及构造函数
}
public interface WifeRepository extends JpaRepository<Wife, Integer> {
}
为何Husband实体可以正确添加,但Wife实体却没有被级联添加呢?
Husband husband = new Husband(1, "Tim", new Wife(1, "Lucy"));
husbandRepository.save(husband);
Cascade用的均是Hibernate的类
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
---------------------------分割线-----------------------------
将
@Cascade({CascadeType.SAVE_UPDATE})
修改为
@Cascade({CascadeType.MERGE})
则级联新增、修改都可以实现,但是我想明确的指定为新增级联就是不行
- 共 0 条
- 全部回答
-
蝌蚪小尾巴 普通会员 1楼
在JPA+Hibernate中,
@OneToOne级联保存的异常是MappingException。这是因为Hibernate在尝试保存到数据库之前,需要解析JPA的实体关系图。如果实体关系图中没有找到与某个对象关联的另一个对象,那么Hibernate将抛出这个异常。解决这个问题的方法是检查实体关系图中的每个对象,确保它们都存在。如果某个对象没有找到与其关联的另一个对象,那么在尝试保存之前,可以考虑添加一个额外的属性来表示该对象与另一个对象之间的关联关系。
例如,如果你有两个实体类
Person和Group,并且Person有一个Group属性,那么在实体关系图中,你需要在Person类上添加一个Group属性,如下所示:```java @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String name; @ManyToOne private Group group;} ```
然后在Java代码中,你可以这样处理
@OneToOne级联保存:java @OneToOne(mappedBy = "person") private Group group;这样,Hibernate就可以知道
group属性与person实体之间的关联关系了。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
