Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Java 将JPA对象转换为XML/JAXB_Java_Xml_Spring_Hibernate_Jaxb - Fatal编程技术网

Java 将JPA对象转换为XML/JAXB

Java 将JPA对象转换为XML/JAXB,java,xml,spring,hibernate,jaxb,Java,Xml,Spring,Hibernate,Jaxb,我想将数据从表转换为XML文件。数据采用以下格式 Continent Country County Town -------------------------------------------------------------- Africa Kenya South Mombasa Africa Egypt South Cairo Europe Eng

我想将数据从表转换为XML文件。数据采用以下格式

    Continent   Country     County      Town
    --------------------------------------------------------------
    Africa      Kenya       South       Mombasa
    Africa      Egypt       South       Cairo
    Europe      England     North       Birmingham
    Asia        Japan       South       Tokyo
将生成的结果XML文档类似于下面所示的文档:

<continents>
    <continent name="Africa">
        <countries>
            <country>
                <countryName>Kenya</countryName>
                <county>South</county>
                <town>Mombasa</town>
            </country>
            <country>
                <countryName>Egypt</countryName>
                <county>South</county>
                <town>Cairo</town>
            </country>
        </countries>
    </continent>
    <continent name="Europe">
        <countries>
            <country>
                <countryName>England</countryName>
                <county>North</county>
                <town>Birminghan</town>
            </country>
        </countries>
    </continent>
    <continent name="Asia">
        <countries>
            <country>
                <countryName>Japan</countryName>
                <county>South</county>
                <town>Tokyo</town>
            </country>
        </countries>
    </continent>    
</continents>
当我运行从数据库检索行的调用时,我将获得以下格式的列表:

List<Town> towns = entityManager.getAllTowns();
为了能够生成XML文件,我必须迭代列表并处理每个Town对象。我可以使用DOM,但我觉得将有很多for循环和if语句来生成XML文档。是否可以生成XML文档而不必遍历列表来构建上面所示的XML文件

我已经将一个JPA对象转换为Jaxb,但这是一个一对一映射的平面关系,即XML结构中没有子元素或内部元素。我不明白如何处理示例xml文件所需的子元素和条件规则

我在Spring3中使用JPA/Hibernate。是否可以生成示例xml文件,或者由于xml文件的格式,是否需要使用for循环和if语句手动生成


谢谢

看一看。假设您有一个JPA实体类和一个JAXB类。Dozer是一个用于在两个这样的bean之间进行映射的框架。但是,您需要指定哪个属性应该映射到哪里。

请查看。假设您有一个JPA实体类和一个JAXB类。Dozer是一个用于在两个这样的bean之间进行映射的框架。但是,您需要指定哪个属性应该映射到何处。

我通常发现,从您正在做的事情中选择另一种方式比较容易。也就是说,使用XJC生成JAXB对象,然后使用orm.xml文件进行到数据库的JPA映射。您可以使用标准的XJC插件和JAXB配置文件定制生成的Java对象

这种方法的优点是只维护一组Java类,可能还有JAXB模型的一些补充子类,而且它还倾向于促进更稳定的XML契约


出于某种原因,人们倾向于轻视使用单独的XML文件进行ORM。不过,在某些情况下,这是有道理的,我相信这就是其中之一。

我通常发现,从你正在做的事情中走另一条路比较容易。也就是说,使用XJC生成JAXB对象,然后使用orm.xml文件进行到数据库的JPA映射。您可以使用标准的XJC插件和JAXB配置文件定制生成的Java对象

这种方法的优点是只维护一组Java类,可能还有JAXB模型的一些补充子类,而且它还倾向于促进更稳定的XML契约

出于某种原因,人们倾向于轻视使用单独的XML文件进行ORM。不过,在某些情况下,它是有意义的,我相信这就是其中之一。

所示的解决方案可能有用。所示的解决方案可能有用。
List<Town> towns = entityManager.getAllTowns();