Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 Hibernate将一个类映射为另一个类_Java_Xml_Hibernate_Orm - Fatal编程技术网

Java Hibernate将一个类映射为另一个类

Java Hibernate将一个类映射为另一个类,java,xml,hibernate,orm,Java,Xml,Hibernate,Orm,我正在尝试映射一个类,它看起来像: public class Skills { private int[] levels; // 10 elements } 现在,在Hibernate中映射一个数组是一件非常痛苦的事情,因为我以前根本没有运气这么做,所以我正在尝试一种不同的方法。这10个元素中的每一个实际上都代表了一项技能本身。把它想象成ATK、STR、DEX、INT等等。由于一些设计限制,它必须用作一个数组,否则我当然只需向其中添加10个字段 真正的痛苦在于将其映射到SQL中以使其更

我正在尝试映射一个类,它看起来像:

public class Skills {
    private int[] levels; // 10 elements
}
现在,在Hibernate中映射一个数组是一件非常痛苦的事情,因为我以前根本没有运气这么做,所以我正在尝试一种不同的方法。这10个元素中的每一个实际上都代表了一项技能本身。把它想象成ATK、STR、DEX、INT等等。由于一些设计限制,它必须用作一个数组,否则我当然只需向其中添加10个字段

真正的痛苦在于将其映射到SQL中以使其更有意义。当然,Hibernate可以对类进行序列化,但这会将字节钻入列中。现在我想知道,是否有任何方法可以指定类似CompoundUserType的内容(我可以说“嘿,这是表的外观,这是字段的每个值!”),或者表示我想以某种方式提供一个Skills$Hbm子类,其中包含一些内容

class Hbm {
    private int atk, str, dex, Int... ;
}

让我找一张更好的桌子?我不知道什么是可行的方法。

我可以知道,为什么要在技能表中创建一系列级别。相反,您可以通过创建一个新的级别表来对其进行规范化,您可以在其中存储关于不同级别技能的信息,并在技能表中存储该级别的引用:即
公共类技能{private level;}


您还可以使用
列表级别而不是使用数组

我想知道,为什么您要在技能表中创建一系列级别。相反,您可以通过创建一个新的级别表来对其进行规范化,在该表中可以存储关于不同级别技能的信息,并在技能表中存储该级别的引用:(即公共类技能{private level;}),因此,该字段必须是一个数组?您不能将其声明为
List
,并添加使用数组的getter和setter吗?正如我在文章中所说的,这是应用程序结构中的设计限制。如果我不得不改变它(我以前真的考虑过你的方法),它会变得非常混乱,所以我需要使用不同的方法。