java - 休眠继承在父母之后保存孩子
问题描述
我以这种方式在我的实体结构中使用Joined Hibernate Inheritance Mapping :
@Getter
@Setter
@Entity
@Table(name= "app_user")
@Inheritance(strategy = InheritanceType.JOINED)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
//some other fields
}
@Getter
@Setter
@Entity
@Table(name= "app_customer")
public class Customer extends User {
//some other fields
}
我想先保存一个用户,然后在另一个 api 中保存一个客户并将该客户映射到第一个用户。因此,我尝试以这种方式使用现有用户 ID保存新客户:
User user = ... //find already saved user
Customer customer = new Customer();
customer.setId(user.getId());
...
customerRepository.save()
但是,hibernate使用新生成的 id(而不是固定传递的 id)生成客户,并且还生成一个新用户。这是我的问题:我怎样才能在父母之后拯救孩子?或者有没有在不再次拯救父母的情况下拯救孩子?
解决方案
尝试更改第二个实体:
@Getter
@Setter
@Entity
@Table(name= "app_customer")
public class Customer{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToOne
@JoinColumn(name = "user_id", referencedColumnName = "id")
User user;
//some other fields
}
推荐阅读
- python - for循环问题的两种解决方案之间的区别?
- javascript - 开玩笑忽略根目录中的 __mocks__ 目录
- r - 基于一列中的两个值对数据框进行子集
- python - 调用对象的存储方法
- php - 将 CakePHP 与 Wordpress 集成
- swift - 如何使用 swift 在单个消息电报机器人中发送照片、标题和内联按钮?
- r - 使用 devtools 和函数“use_rcpp”创建 R 包指示我将代码行复制到不存在的文件中
- java - 找不到符号错误_PrintWriter.printf() 方法_
- bots - 在 BOT 模拟器中显示自适应卡片的注释
- python - 如何让我的批量上传代码更有效率?