从 xsd 到数据库。如何?
From xsd to database. How?
我的主要目标是加载 xml 的 ISO19115-2 并将其存储到数据库中。
有了这个 Generate hibernate entity beans from XSD,我创建了所有 类,我可以阅读 xml 并在 Java 中解组。
现在我想做的是生成数据库模式(注意有 900+ 类)。
我认为解决方案可能是使用 hibernate 将对象映射并存储到数据库中。
我已经创建了 hbm.xml 映射文件,但 hibernate 不喜欢它们,出现如下错误:
org.hibernate.MappingException: Foreign key (FK9C4C4E4C6991863A:DIRECTPOSITIONTYPE [LOWERCORNER])) must have same number of columns as the referenced primary key (ENVELOPETYPE [LOWERCORNER,idx])
并且有成千上万个这样的错误。
注解了 jaxb 类,是否有其他方法获取数据库模式?
另请注意,使用像这样的工具 http://xsd2db.sourceforge.net/ 不是解决方案,因为我想从 java 加载 xml 并且我无法手动为所有类.
hyperjaxb作者在这里
我非常了解 ISO 19115 架构,我绝对不建议将这些文档的 XML 实例保存在关系数据库中。几年前,我开发了一个地理元数据管理产品(以及其他产品)正是这样做的(将 ISO 19115 保存在关系数据库中),现在,几年后我真的要说 - 这不是正确的设计.
当时我确实设法让 Hyperjaxb 适用于 ISO 19115 模式,所以原则上这是可行的。但我最终发现,将 ISO 19115 数据结构化地保存在规范化数据库模式中并没有多大意义。 ISO 19115 文档通常通过使用过滤器编码作为查询语言的 CSW 接口访问。 Filter Encoding大多使用基于"properties"的表达式(ogc:PropertyIsLike
等)。因此,最终只在支持的属性上索引每个 XML 实例要好得多。为此,您实际上并不需要 ISO 19115 数据的结构存储。
我想这并没有回答你的问题,但我去过那里,做过那个,我不会按照你的意愿去做。
我的主要目标是加载 xml 的 ISO19115-2 并将其存储到数据库中。
有了这个 Generate hibernate entity beans from XSD,我创建了所有 类,我可以阅读 xml 并在 Java 中解组。
现在我想做的是生成数据库模式(注意有 900+ 类)。
我认为解决方案可能是使用 hibernate 将对象映射并存储到数据库中。
我已经创建了 hbm.xml 映射文件,但 hibernate 不喜欢它们,出现如下错误:
org.hibernate.MappingException: Foreign key (FK9C4C4E4C6991863A:DIRECTPOSITIONTYPE [LOWERCORNER])) must have same number of columns as the referenced primary key (ENVELOPETYPE [LOWERCORNER,idx])
并且有成千上万个这样的错误。
注解了 jaxb 类,是否有其他方法获取数据库模式?
另请注意,使用像这样的工具 http://xsd2db.sourceforge.net/ 不是解决方案,因为我想从 java 加载 xml 并且我无法手动为所有类.
hyperjaxb作者在这里
我非常了解 ISO 19115 架构,我绝对不建议将这些文档的 XML 实例保存在关系数据库中。几年前,我开发了一个地理元数据管理产品(以及其他产品)正是这样做的(将 ISO 19115 保存在关系数据库中),现在,几年后我真的要说 - 这不是正确的设计.
当时我确实设法让 Hyperjaxb 适用于 ISO 19115 模式,所以原则上这是可行的。但我最终发现,将 ISO 19115 数据结构化地保存在规范化数据库模式中并没有多大意义。 ISO 19115 文档通常通过使用过滤器编码作为查询语言的 CSW 接口访问。 Filter Encoding大多使用基于"properties"的表达式(ogc:PropertyIsLike
等)。因此,最终只在支持的属性上索引每个 XML 实例要好得多。为此,您实际上并不需要 ISO 19115 数据的结构存储。
我想这并没有回答你的问题,但我去过那里,做过那个,我不会按照你的意愿去做。