我们有一个 Spring 3.2、Hibernate 4.2 应用程序。
我们的应用程序有一个上传模块,您基本上可以上传各种文件。文件上传还会生成一个数据库条目:
id, directory, filename, mimeType, userId
所以基本上应该可以从应用程序的任何地方上传文件。而且我们不希望每个可能的实体都有一个新的 UploadEntity。所以我们考虑使用某种通用表进行上传:
id, directory, filename, mimeType, userId, FOREIGN_KEY
问题当然是,我们不能在 JPA 中为这个外键设置具体的数据类型,因为它可以指向实体 A 或 B 或 C 或......我们UUID
在应用程序中用作键,所以我们考虑两种解决方案:
- 制作
foreignKey
简单的类型UUID
并始终保存外国实体的 ID。 - 使用注解制作
foreignKey
of 类型,但我们当然不能为此提供目标实体。Object
@ManyToOne
但也许还有其他更好/更简单的解决方案。你怎么看?
我忘了告诉你,我们使用的每个实体都实现Persistable<UUID>
了,那么可以使用这个接口作为外键的类型吗?
顺便说一句:我们永远不需要使用来自UploadedItem -> SomeEntity
. 我们只需要另一种方式:SomeEntity -> UploadedItem
.