java - 使用 Spring Boot 和 Hibernate 在 2 个微服务中建立多对多关系的问题
问题描述
所以对于这个任务,我应该有 2 个微服务(任务服务和用户服务),每个都有自己的数据库。一个任务可以分配给多个用户,但可以将多个用户分配给多个任务,因此它是多对多的关系。
这两个微服务都是使用 Hibernate 的 Spring Boot 应用程序,我正在努力使任务服务中的任务和用户之间发生这种关系,因为我认为复制用户服务中已经存在的用户模型不是一个好主意,交给任务服务。
此分配假设两个数据库中的用户 ID 保持一致,而无需使用外键。
对于上下文:
Task.java [任务服务]
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class Task extends BaseEntity {
private String name, description;
@ManyToOne
private Lane lane;
@OneToMany
private List<TaskUser> users;
}
TaskUser.java [任务服务]
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode
public class TaskUser {
@Id
private Long id;
@Column(name = "task_id")
private Long taskId;
@Column(name = "user_id")
private Long userId;
}
User.java [用户服务]
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class User extends BaseEntity {
@Column(unique = true)
private String username;
}
目前,Hibernate 正在任务服务数据库中生成一个 task_user 和 task_users 表,我希望只有一个中间表而不是两个。
问题:在使用两个不同的微服务时,如何使这种多对多关系与 Hibernate 一起工作?
解决方案
也许更好的休眠映射:
Task.java [任务服务]
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class Task extends BaseEntity {
private String name, description;
@ManyToOne
private Lane lane;
@OneToMany(mappedBy="task")
private List<TaskUser> users;
}
TaskUser.java [任务服务]
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode
public class TaskUser {
@Id
private Long id;
@ManyToOne
@JoinColumn(name="task_id", nullable=false)
private Task task;
@Column(name = "user_id")
private Long userId;
}
推荐阅读
- r - 在 tidyverse 之后加载 Magick 包
- javascript - JavaScript:继承静态对象,如静态原语
- visual-studio-code - Visual Studio Code:窄终端输出
- python - tkinter- HTML 编辑器应用程序中的自动完成问题
- caddy - 美居 symfony 和 Caddy 服务器不工作
- django - 带有参数的Django url,不知道如何测试
- security - 保护客户端 Chrome 扩展代码的方法
- java - 如何在 Java 11 中检查MemberAccess(SomeClass.class, Member.DECLARED)
- php - 用于 Twitter 推文的 PHP 中带有 preg_replace 的 JSON 解码数组
- python - 正确排序字符串列表的问题