Inheritance JPA:从表名查找类
我有一张“文件”桌Inheritance JPA:从表名查找类,inheritance,jpa,orm,Inheritance,Jpa,Orm,我有一张“文件”桌 CREATE TABLE `documents` ( `id` int(11) NOT NULL AUTO_INCREMENT, `docnum` int(11) default null, `docdate` DATE default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 和相应的文档@实体。然后我有一个订单,发票和其他类似的表格,它们与文档有1对1的关系。文档实体声明联合继承和派生
CREATE TABLE `documents` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`docnum` int(11) default null,
`docdate` DATE default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
和相应的文档@实体。然后我有一个订单
,发票
和其他类似的表格,它们与文档
有1对1的关系。文档实体声明联合继承和派生订单、发票,。。。实体使用@PrimaryKeyJoinColumn。一切正常
然后我有一个表,它在各种文档类型之间建立了一些弱关系:
CREATE TABLE IF NOT EXISTS `documents_xref` (
`id` int(11) not null auto_increment primary key,
`xrefdate` DATE not null,
`src_doc` int(11) not null,
`src_doc_tablename` VARCHAR(250) not null,
`dst_doc` int(11) not null unique,
`dst_doc_tablename` VARCHAR(250) not null,
INDEX(`src_doc`),
CONSTRAINT FOREIGN KEY (`src_doc`) REFERENCES `documents` (`id`),
CONSTRAINT FOREIGN KEY (`dst_doc`) REFERENCES `documents` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
现在我需要显示文档之间关系的图形,图形的每个节点都必须告诉它是什么类型的文档,因此我需要从表名中找到@Entity类。除了暴力,还有其他方法从JPA2获得它吗
另一方面:如果有人愿意为我创建“joined Inheritation”标记并将其附加到我的问题上,那么有1500个代表的人是否可以为我创建该标记?非常感谢。这将是特定于提供者的,因为您需要访问内部JPA元数据,除非您自己处理所有注释/xml,或者定义自己的表和类之间的硬编码映射 对于EclipseLink,您可以从EntityManagerFactory打开EclipseLink会话并访问所有描述符
for (ClassDescriptor descriptor : emf.unwrap(Session.class).getDescriptors().values()) {
Class entityClass = descriptor.getJavaClass();
List<String> tables = descriptors.getTableNames();
}
for(类描述符描述符:emf.unwrap(Session.class.getDescriptors().values()){
类entityClass=descriptor.getJavaClass();
列表表=描述符。getTableNames();
}
谢谢,我正在使用Hibernate,但我不想将我的代码绑定到它,也不想绑定到任何其他提供程序。然后我将自己处理注释。