博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate @OneToOne 自动新增和删除
阅读量:6629 次
发布时间:2019-06-25

本文共 1833 字,大约阅读时间需要 6 分钟。

版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82811799

Hibernate创建一对一关系时两张表主表保持一致则可以实现自动新增和删除

更多精彩

  • 更多技术博客,请移步

主表配置

  1. 主表对应类中需要通过**@OneToOne**来表示其与从表的关系
@Entity@Table(name = "sys_user")public class User {
@Id @GeneratedValue(strategy = IDENTITY) private Long id = new Long(0); @OneToOne(cascade = {
CascadeType.ALL}, mappedBy = "user", fetch = FetchType.LAZY) @JsonIgnore private UserAccount userAccount; public UserAccount getUserAccount() {
return userAccount; } public void setUserAccount(UserAccount userAccount) {
this.userAccount = userAccount; }}

从表配置

  1. 从表中的id需要通过**@GeneratedValue@GenericGenerator**来指明该值从主表中获取
  2. 从表中同时需要通过**@OneToOne**来表示其与主表的关系
    • 在维护与主表关系中需要通过**@PrimaryKeyJoinColumn**来表示两个表是主键关联,不存在多余外键
@Entity@Table(name = "sys_user_account")public class UserAccount {
@Id @GeneratedValue(generator = "generator") @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "user")) private Long id = 0L; @OneToOne(fetch = FetchType.LAZY) @PrimaryKeyJoinColumn private User user; public UserAccount() {
} public UserAccount(User user) {
this.user = user; } public Long getId() {
return id; } public void setId(Long id) {
this.id = id; } public User getUser() {
return user; } public void setUser(User user) {
this.user = user; }}

保存操作

  1. 主表在执行保存操作时,需要将从表注入其中,同时将主表的引入也注入到从表,才能实现两个对象的双向关联
  2. 当主表的id自增成功时,由于从表保有对主表的引用,所以也可以得到主表的id
public void save(User user) {
if (user.isNew()) {
user.setUserAccount(new UserAccount(user)); super.save(user); } else {
super.save(userModel); }}
你可能感兴趣的文章
using标识使用
查看>>
T264接口说明
查看>>
SELinux介绍
查看>>
visual C++ 用 TextOut 输出单个字符
查看>>
Rsyslog实现Nginx日志统一收集
查看>>
开源数字媒体资产管理系统:Razuna
查看>>
linux文本处理三剑客之grep家族及其相应的正则表达式使用详解
查看>>
Java中的IO操作(一)
查看>>
Python---装饰器
查看>>
s17data01
查看>>
java set and get 用法
查看>>
linux笔记1-1
查看>>
dubbo源码分析-负载均衡
查看>>
一统江湖的大前端(3) DOClever——你的postman有点low
查看>>
云栖大会上发布了哪些移动研发新利器?
查看>>
《黑客免杀攻防》读书笔记-软件逆向工程(6) switch-case分支
查看>>
day6作业--游戏人生完善
查看>>
金字塔思维
查看>>
strak组件(10):批量操作
查看>>
thinkphp空控制器的处理
查看>>