[英]Hibernate XML Mapping in Java
编辑:我想稍微改变这个问题:-)
我想使用Hibernate XML将SaveGame Objet保存在SQL数据库中。 我要做的就是保存它。 我的问题是我找不到解决方法。 我现在在互联网上搜索了3个小时,却没有找到解决方案。
我要做的就是将整数数组作为普通值保存到数据库中。 我在搜索过程中发现可以使用blob列来完成此操作。 但是,在这个伟大的互联网上,我找不到任何方法。 我只是寻找一个可以向我展示如何正确执行操作的人。 因为我所有的尝试都失败了。 我现在很沮丧。
我要保存的班级是这样的:
public class SaveGame implements IDBObject {
int id;
String username;
int basic_game_id;
List<Integer> route = new ArrayList<Integer>();
/*getter + setter */
SaveGame表应如下所示:
ID | 用户名| basic_game_id | 路线|
1 | 马克西| 1 | xxxxx |
我希望这一次清楚我想做什么。 我不必保存每个数组条目。 我只想将整个数组保存在route列中。 而且我找不到我该怎么做!
旧问题:
我尝试使用Hibernate将Integer Array映射到我的数据库。
这是我班的样子
public class SaveGame implements IDBObject {
int id;
String username;
int basic_game_id;
List<Integer> route = new ArrayList<Integer>();
/*getter + setter */
我的映射XML看起来像这样:
<class name="com.travelsales.base_classes.SaveGame" table="SAVEGAME">
<meta attribute="class-description">
This class contains the Save games.
</meta>
<id name="id" type="int" column="id">
<generator class="native"></generator>
</id>
<property name="basic_game_id" type="int" column="basic_game_id"></property>
<property name="username" type="string" column="username"></property>
<list name="route" column="route">
<element type="int"></element>
</list>
</class>
好吧,我找不到错误。
我的问题是我必须在xml映射部分中有一个错误。 如果我删除列表,一切正常。 我想在我的数据库中保存整数数组或整数列表。 而且我认为我做事的方式有误。
使用此代码,我得到以下错误:
Exception in thread "main" java.lang.ExceptionInInitializerError at com.travelsales.controller.MainController.main(MainController.java:42) Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource Hibernate Config/mapping.hbm.xml
不确定您要实现的目标,是否要将路线存储在单独的表中(可搜索等),还是希望将其与SaveGame放在同一行中。
如果您的情况确实像您介绍的那样简单,我建议您存储在同一行中,以节省从联接中获取int值的过程。
将属性映射到Blob列即可完成所有操作。 我没有使用xml配置,所以不知道语法,但是使用JPA批注可以通过以下代码解决:
@Lob
List<Integer> route;
如果您的休眠版本不处理接口(您将收到错误消息),请将属性声明形式从List更改为ArrayList(可序列化,因此可以将其另存为blob列中的字节)。
好吧,经过所有的尝试和所有在线文档的学习。 也许有一天,另一个人会遇到与我同样的问题。
我正在搜索Hibernate类型非常简单,我发现了这句话:
如果使用名称列和类型使属性像普通属性一样。 Hibernate会尝试在我的情况下int Array的输入类型是否可能。 Hibernate会回答您该类型未知。 如果将类型设置为byte [],hibernate将回答:不知道将int数组转换为byte数组。
解决方法很简单,只是不设置类型。 像这样写属性:
<property name="route" column="route"/>
Hibernate现在将查找所需的类型并为您设置它。 一切正常,就像您想做的那样。 在互联网上,您会找到大量用于数组,集合和列表的资源。 所有这些将为您的阵列提供一个新的Tabel特殊功能。
如果要执行此操作,请通过有用的示例检查互联网的内容。 如果您只想保存Objects和Hibernate,则不要知道类型,而不必在XML中设置类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.