如果我在hibernate中应用一对多关系,我的代码是否会起作用 - 仅限Java中的实体端而不是DB端(表之间不会有外键,我不想修改表)?
下面编辑的问题。
以下是我的表格 - 一名员工拥有多个证书
Emp表 - >
id (Primary key)
first_name
last_name
salary
emp_id
证书表 - >
id (primary key)
certificate_name
cert_id
这里,这些表数据与emp_id
和cert_id
相关。(表中没有关系。但是查看现有系统中的数据是相关的)
由于它是现有的DB,我不想更改表并在DB中添加外键关系。 我想只从hibernate方面添加关系。可能吗。 ?
答案 0 :(得分:0)
仅尝试引用id
字段,而不是证书实体中的实体。您的员工实体将保持不变,但没有@OneToMany
关系。在您的证书实体中,而不是:
@ManyToOne
@JoinColumn(name="EMPLOYEE_ID")
Employee employee
这样做:
@Column(name="EMPLOYEE_ID")
Integer employeeId;
答案 1 :(得分:0)
首先,Hibernate在数据库端不需要ForeignKey关系。 如果关闭了hbm2ddl,则休眠不会创建一个。
只需将其声明为正常的一对多关系,hibernate将为员工制作一系列证书。请务必使用Set或Bag not List,因为List需要索引列。
答案 2 :(得分:0)
如果主键相同,则这是正式且纯粹的一对一关系,可以这样映射。数据库中没有你需要的东西。