在hibernate中使用继承将对象从子类表复制到超类表

时间:2017-06-24 18:10:17

标签: java mysql hibernate inheritance

我正在创建一个允许用户将记录添加到数据库的网站。在添加记录之前,提交的记录需要先由主持人批准,然后才能在实际记录表中允许。我想利用2个recordObject来实现这一目标。一个是另一个的子类,并继承了它的所有列和属性。

所以pendingRecord扩展了Record。 pendingRecord提交首先进入pendingRecord表(与Record表的列相同),当它被主持人批准时,pendingRecord行将被添加到Record表中并从pendingRecord表中删除。

有谁知道我怎么能做到这一点?我已经看过使用@Inheritance和@Mappedsuperclass注释,但它们似乎都没有给我我需要的解决方案。

亲切的问候,

1 个答案:

答案 0 :(得分:1)

据我所知,你不遵循语义:

您有一条包含未批准数据的记录。另一条记录是关于批准的数据。所以,即使你倾向于看到冗余,也不是。因此继承是错误的。

如果你的整体记录得到批准或拒绝,你可能会想出一个包含人工制品的状态字段,以确定记录是否已被批准或拒绝。

在您的情况下,单向或其他继承是不合适的。

仅重用数据结构,因为它们看起来相似可能会导致错误类型II。你认为你的代码更好,但实际上你会让它变得更糟。在这种情况下,您希望从没有适当抽象的东西中抽象出来。

想一想:我的提议和订单包含类似的信息,但它们的语义完全不同。对包含重叠字段的商品和订单没有这样的抽象。它们是完全分离的数据结构。