Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 eclipselink结构字段顺序_Java_Oracle_Struct_Eclipselink - Fatal编程技术网

Java eclipselink结构字段顺序

Java eclipselink结构字段顺序,java,oracle,struct,eclipselink,Java,Oracle,Struct,Eclipselink,我正在开发一个EclipseLink应用程序,它使用Oracle对象作为输入和输出参数(同时调用存储过程)。正如您所知,Eclipselink中有@Struct注释可用于表示Oracle对象,我使用了它,它工作得非常好。但,看起来在Struct注释类中声明的字段的顺序对于映射到oracle对象中的正确字段非常重要。这会导致维护问题,并且当对象的属性更复杂时,很难编写代码。在Eclipselink中,有没有一种方法可以根据名称而不是顺序来表示地图结构字段 下面是我的结构类。若我碰巧按照字段列表的不

我正在开发一个EclipseLink应用程序,它使用Oracle对象作为输入和输出参数(同时调用存储过程)。正如您所知,Eclipselink中有@Struct注释可用于表示Oracle对象,我使用了它,它工作得非常好。但,看起来在Struct注释类中声明的字段的顺序对于映射到oracle对象中的正确字段非常重要。这会导致维护问题,并且当对象的属性更复杂时,很难编写代码。在Eclipselink中,有没有一种方法可以根据名称而不是顺序来表示地图结构字段

下面是我的结构类。若我碰巧按照字段列表的不同顺序声明变量,则从存储过程中获取记录时会发生错误/不正确的映射。它总是将值从上到下映射到字段@列名批注无法解决此问题

        @Struct(name = "REC_OBJECT",
            fields = {"TRANS_ID", "PROJECT_ID", "LANGUAGE_CODE", "DESCRIPTION"})
    @Embeddable
    public class Master {

        @Column(name = "PROJECT_ID")
        private String projectId;

        @JsonIgnore
        @Column(name = "TRANS_ID")
        private String transactionId;

        @Column(name = "LANGUAGE_CODE")
        private String languageCode;

        @Column(name = "DESCRIPTION")
        private String description;

}

请对此提出解决方案。谢谢。

我不太清楚我是否理解这个两难境地——“字段”元素用于定义与实体中字段/属性处理方式不同的顺序。这就是指定与实体中属性的处理方式无关的结构匹配顺序的方式。我的想法是相同的(fields元素用于定义顺序,我们可以使用@Column注释将每个字段名映射到实体类中任意位置的属性)。但当我在实体类中以不同于字段顺序的顺序声明变量时,发生了错误的映射。在这个意义上-在上面的代码中,TRANS_ID是fields数组中的第一个字段名。若我将projectId声明为实体类中的第一个属性而不是transactionId,则TRANS_ID值将填充在propertyId中。希望你能理解。我哪里做错了。请建议。谢谢。我有更新代码将projectId作为第一个属性移动。现在当我收到结果时,TRANS_ID值被映射到projectId属性。有人对此有什么建议吗?