我可以在Entity类中定义关系而不将它们放在数据库中吗?

时间:2010-09-13 10:44:45

标签: mysql jpa java-ee-6

我必须在Java EE6中编写一个应用程序。我得到了一个MySQL数据库,我不允许对其进行任何更改。数据库结构良好且规范化,但没有定义任何外键来强制执行完整性。 (它使用MyISAM引擎)。

是否可以在JPA实体类中定义关系(使用@JoinColumn,@ ManyToOne等)而无需在数据库中定义外键?

2 个答案:

答案 0 :(得分:2)

数据库中的“关系”是什么意思?如果你只是指外键约束(即你有外键值,但没有约束),那么你不需要那些在JPA中定义关系,只需使用外键值。

如果您只有平面表,根本没有关联它们,那么您无能为力,您需要一些与表相关的数据。如果您至少可以创建新表,则可以使用JoinTable关系来关联表。

答案 1 :(得分:1)

  

数据库结构良好,但没有定义任何关系(外键)。 (它使用MyISAM引擎)。

外键用于检查和强制引用完整性,而不是连接表。 换句话说,使用MyISAM表不会阻止表之间的关系。

  

是否可以在JPA实体类中定义关系(使用@JoinColumn,@ ManyToOne等)而不在数据库中实际拥有它们?

只要存在这种关系(与让FK强制执行完整性无关),您可以使用它们来映射您的实体。