在没有DB关系映射的情况下进行一对多的休眠

时间:2016-06-19 02:33:39

标签: hibernate one-to-many

如果我在hibernate中应用一对多关系,我的代码是否会起作用 - 仅限Java中的实体端而不是DB端(表之间不会有外键,我不想修改表)?

下面编辑的问题。

以下是我的表格 - 一名员工拥有多个证书

Emp表 - >

   id (Primary key)

   first_name

   last_name

   salary

   emp_id

证书表 - >

   id (primary key)

   certificate_name 

   cert_id

这里,这些表数据与emp_idcert_id相关。(表中没有关系。但是查看现有系统中的数据是相关的)

由于它是现有的DB,我不想更改表并在DB中添加外键关系。 我想只从hibernate方面添加关系。可能吗。 ?

3 个答案:

答案 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)

如果主键相同,则这是正式且纯粹的一对一关系,可以这样映射。数据库中没有你需要的东西。