Java eclipselink结构字段顺序
我正在开发一个EclipseLink应用程序,它使用Oracle对象作为输入和输出参数(同时调用存储过程)。正如您所知,Eclipselink中有@Struct注释可用于表示Oracle对象,我使用了它,它工作得非常好。但,看起来在Struct注释类中声明的字段的顺序对于映射到oracle对象中的正确字段非常重要。这会导致维护问题,并且当对象的属性更复杂时,很难编写代码。在Eclipselink中,有没有一种方法可以根据名称而不是顺序来表示地图结构字段 下面是我的结构类。若我碰巧按照字段列表的不同顺序声明变量,则从存储过程中获取记录时会发生错误/不正确的映射。它总是将值从上到下映射到字段@列名批注无法解决此问题Java eclipselink结构字段顺序,java,oracle,struct,eclipselink,Java,Oracle,Struct,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属性。有人对此有什么建议吗?