Java @Entity和@Embeddeble之间的固有性
动机 我的应用程序根据表foo的内容向某些web服务发出请求。我想记录这些请求(在数据库中)以及用于生成请求的foo行的值。尽管如此,由于表foo中的数据可能会随时间而变化,所以我需要记录行的确切内容(而不是它的id)。我正在使用Hibernate,所以我想,我可以在表示请求的实体中嵌入一行foo。要有干净的类层次结构,我希望有如下内容:Java @Entity和@Embeddeble之间的固有性,java,database,hibernate,jpa,Java,Database,Hibernate,Jpa,动机 我的应用程序根据表foo的内容向某些web服务发出请求。我想记录这些请求(在数据库中)以及用于生成请求的foo行的值。尽管如此,由于表foo中的数据可能会随时间而变化,所以我需要记录行的确切内容(而不是它的id)。我正在使用Hibernate,所以我想,我可以在表示请求的实体中嵌入一行foo。要有干净的类层次结构,我希望有如下内容: class Foo { /* * Here goes some properties of Foo, which specify colum
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
}
问题
这将不起作用,因为EmbeddeDableFoo看不到Foo的属性。我可以在Foo上添加@Inheritation注释,这样EntityFoo*可以看到Foo的*属性,但这并不能解决我在EmbeddedBleFoo上的问题
问题
是否有一种简单的方法(即不需要编写大量冗余代码)让@Embeddeble和@Entity*从同一个类继承?您是否检查了注释
@MappedSuperclass
?这可能就是你要找的
指定一个类,该类的映射信息应用于
从中继承的实体。映射的超类没有单独的
为其定义的表
可以映射使用MappedSuperclass注释指定的类
与实体的方式相同,只是映射仅适用于
由于映射的超类不存在表,因此无法将其复制到其子类
它本身当应用于子类时,继承的映射将
在子类表的上下文中应用。地图信息可能会
通过使用AttributeOverride和
AssociationOverride注释或相应的XML元素