Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSD到JAXB到JPA的映射_Jpa_Jaxb_Eclipselink - Fatal编程技术网

XSD到JAXB到JPA的映射

XSD到JAXB到JPA的映射,jpa,jaxb,eclipselink,Jpa,Jaxb,Eclipselink,首先,我有一组固定的非平凡XSD——我不能更改它们,但它们会不时地进行一些小的更改。这些用于在我这边生成JAXB2类,没有问题。我需要将这些Java类的许多属性持久化到RDBMS中,在RDBMS中我可以设计模式,但它们需要是最优的,因此我不能遵循原始结构,应该扁平化嵌套较深的结构,等等 我考虑过使用Eclipselink JPA(我可以使用它的扩展,这里我的目标不是兼容性)并通过orm.xml文件定义所有映射——这样我就不必接触自动生成的JAXB类。在大量使用嵌入式概念的基础上构建解决方案有助于

首先,我有一组固定的非平凡XSD——我不能更改它们,但它们会不时地进行一些小的更改。这些用于在我这边生成JAXB2类,没有问题。我需要将这些Java类的许多属性持久化到RDBMS中,在RDBMS中我可以设计模式,但它们需要是最优的,因此我不能遵循原始结构,应该扁平化嵌套较深的结构,等等

我考虑过使用Eclipselink JPA(我可以使用它的扩展,这里我的目标不是兼容性)并通过orm.xml文件定义所有映射——这样我就不必接触自动生成的JAXB类。在大量使用嵌入式概念的基础上构建解决方案有助于扁平化XML结构并实现良好的DB模式

但我不知道如何处理一些特殊情况,例如:

  • 在JPA中应该映射为@Embedded但也是多态的深嵌套对象(是抽象的,并且有许多可能的子类)
  • JAXBElement包装类型
  • 仅应将某些键映射到DB的映射
  • XmlGregorianalendar-s
  • 等等
  • 为了接近3),我创建了生成的JAXB实例的自定义子类,并将其映射为实体,而不是原始实体。儿童班引入了假getter和setter,它们在背景图上起作用-这很好,但感觉很脆弱

    我也不确定什么时候我会碰到第一个拐弯处的情况,这个问题根本无法用Eclipselink JPA解决,这将迫使我放弃整个方法


    问题是:Eclipselink JPA能否成为现有复杂JAXB类型的某些属性与理想设计的RDBMS模式之间映射的可行方法?如果是这样,我如何处理上述特殊情况?如果不是,我还能如何处理这个问题呢?

    你看到了吗?(免责声明:我是作者。)我看到它在一些帖子中被提及,但不确定它是一个活动项目还是一个被取消的项目。当前状态是什么?被动,但未取消。