我们有一个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
注释创建Object
类型的@ManyToOne
,但当然我们无法为此提供目标实体。但也许还有其他一些更好/更容易的解决方案。你觉得怎么样?
我忘了告诉你,我们使用的每个实体都实现Persistable<UUID>
,那么是否可以将此接口用作外键的类型?
顺便说一下:我们需要从不来使用UploadedItem -> SomeEntity
的引用。我们只需要另一种方式:SomeEntity -> UploadedItem
。