繁体   English   中英

Java中的Hibernate XML映射

[英]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类型,而您只想将其保存在1列中,则不要在Hibernate XML中写入类型,而让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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM