我在Jboss7环境中使用Hibernate4.1,Postgres9数据库作为后端。我有一个名为documents
的表。它看起来像这样:基于表列是非空/非空的,我可以继承@Entity吗?
CREATE TABLE documents (
id serial primary key,
name varchar(255) not null,
path varchar(255) not null,
content text
);
现在我已经有一个名为Document
反映该表的实体:
@Entity
public class Document {
@Id @GeneratedValue(strategy = IDENTITY)
Integer id;
@Column(nullable = false)
String name;
String path;
@Type(type = "text")
String content;
}
实际的表/实体有些做大实体有附加一堆逻辑它基于它是否由文件(非空path
)或仅字符串(非空content
)支持。我想将文件处理拆分为一个名为FileDocument
的单独实体,该实体将从Document
延伸。 我可以用Hibernate来映射它吗?如果是这样,怎么样?
我宁愿如果我可以使用单表继承和基于path
列来表示这个“自然”,而不需要添加另一列。
我应该补充说,如果文档可以被解析或OCR,那么“文件支持”文档仍然可以有非空的content
。
您是否检查过MappedSuperClass注解? – fiso 2013-03-19 08:52:28
是的,但我的理解是'@ MappedSuperClass'仅用于在实体之间共享公共属性?在这种情况下,我的根'Document'类是一个完整的实体,它是我当前所有代码查询的实体(但有时它现在将获得具有附加功能的子类)。 – mabi 2013-03-19 09:01:03