【发布时间】:2019-05-04 00:05:24
【问题描述】:
您好,我的任务是使用 Spring Boot 和 Hibernate 构建应用程序。问题是我正在通过 data.sql 文件构建数据库以保存数据并创建数据库。现在我需要在我的两个表之间创建一个关系表。这应该是一对多的关系,因为工作人员可以有一个用户帐户,也可以没有一个帐户。问题在于如何在应用程序启动时构建此关系表,因为引用应该是外键 user_id 和 worker_id 我在启动时没有,因为它们是创建的通过休眠自动进行,因此无法对它们进行硬编码。所以问题是我将如何从 data.sql 创建这个关系芯片表。
data.sql:
INSERT INTO worker (name, last_name, status) VALUES
('manuel', 'dias', 'active'),
('sailin ', 'nal', 'active'),
('abraham', 'lincon', 'active'),
('mick', 'smith', 'active'),
('jose', 'perez', 'inactive'),
('luis', 'nuñez', 'inactive'),
('ruben', 'puertas', 'inactive'),
('anders', 'stone', 'inactive'),
('luis', 'alvarez', 'deleted'),
('claudio', 'martinez', 'deleted'),
('morfeo', 'rodriguez', 'active'),
('onetys', 'estrada', 'inactive'),
('rene', 'fajardo', 'active');
INSERT INTO users (username, password, user_type, status) VALUES
('madi', 'madi', 'worker', 'active'),
('sana', 'sana', 'worker', 'active'),
('abli', 'abli', 'worker', 'active'),
('mism', 'mism', 'worker', 'active'),
('jope', 'jope', 'worker', 'active'),
('lunu', 'lunu', 'worker', 'active'),
('rupu', 'rupu', 'worker', 'active'),
('anst', 'anst', 'worker', 'active'),
('lual', 'lual', 'worker', 'active'),
('clma', 'clma', 'worker', 'active');
Users.class:
@Entity
@Table(name = "users")
public class Users implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", nullable = false)
private int userId;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "userType")
private String userType;
@Column(name = "status")
private String status;
@ManyToOne
@JoinColumn(name = "worker_id")
private Worker worker;
Worker.class:
@Entity
@Table(name = "worker")
public class Worker implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "worker_id")
private int workerId;
@Column(name = "name")
private String name;
@Column(name = "last_name")
private String lastName;
@Column(name = "status")
private String status;
@OneToMany(mappedBy = "worker", cascade = CascadeType.ALL)
private Collection<Users> users;
我必须这样做:
1: 创建另一个实体,以便能够在数据库中创建一个新表来保存用户和工作实体的外键?
2:能否用data.sql中的脚本来完成。
我会在 users 表中创建一个引用 worker id 的列,但任务明确表示:
"创建第三个表来保存关系"
提前致谢
【问题讨论】:
标签: spring hibernate jpa spring-data-jpa