动机
我的应用程序根据表 foo 的内容向某些 Web 服务发出请求。我想记录这些请求(在数据库中)以及用于制作它们的 foo 行的值。尽管如此,由于表 foo 中的数据会随着时间而改变,我需要记录行的确切内容(而不是它的 id)。我正在使用 Hibernate,所以我想,我可以将 foo 行嵌入到表示请求的实体中。为了有干净的类层次结构,我想要这样的东西:
class Foo
{
/*
* Here goes some properties of Foo, which specify columns names etc.
*/
}
@Embeddable
class EmbeddableFoo extends Foo
{
//EmbeddableFoo should have the same properties as Foo
}
@Entity
class EntityFoo extends Foo
{
@Id
Long getId() { //EntityFoo has some id }
//EntityFoo should have the same properties as Foo, except that
//it has id
}
问题
这不起作用,因为EmbeddableFoo看不到Foo的属性。我可以在Foo上添加@Inheritance注释,以便EntityFoo *看到* Foo的属性,但它不会解决我的EmbeddableFoo问题
问题
是否有一种简单的(即不需要编写大量冗余代码)方法让@Embeddable和@Entity* 从同一个类继承?