2011-10-31 62 views
2

是否可以使用休眠映射数据结构Map<String, int[]>?该数组通常会有相同的数字条目。如何映射Map <String,int []>?

对不起,可能愚蠢的问题,但我目前不知道如何做到这一点。

+4

int [4] s中数字的含义是什么?这看起来像你实际上想要一个有4个字段的新类。 –

+0

该数组将存储映射到开发过程步骤的度量值的目标值。例如,在0级中,值应该是2,在1级时应该是5会导致[0] = 2和[1] = 5。该字符串存储测量的名称。 我必须纠正自己。这些步骤的数量是恒定的,但可以配置==>所以我们需要一个数组或一个列表。在我们的测试配置中,我们使用了4. 我唯一的想法是用字符串和数组作为成员来实现一个类,并分别映射这个类。但是有没有更优雅的方式? – BitSchupser

+1

像“Measurement {String name; int [] data; }'会更多“关系”,然后'Map '在这里,但它会使名称的访问复杂化 - 通常的访问模式是什么?如果在可预见的未来出现超过“预期价值”的情况,可能是“Measurement {String name; SortedSet data; } class DataPoint {int value; ...}可能是另一个(非常详细)的选项。 –

回答

0

前段时间我试过做类似的事情,甚至在一些严重的文献研究之后,我无法以通用的方式找到在hibernate中映射数组的方法。

当时我的解决方案是一个包装类(有超过4个)的字段和访问器方法,它们允许对这些字段进行类似数组的访问。

int a; 
int b; 
int c; 
int d; 

public int get(int ref) { 
    switch(ref) { 
    case 0: 
     return a; 
    case 1: 
     return b; 
    case 2: 
     return c; 
    case 3: 
     return d; 
    default: 
     throw new ArrayIndexOutOfBoundsException(); 
    } 
} 

如果您有四个以上的变量需要处理,您可以使用反射而不是switch语句。

相关问题