有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何用HibernateXML文件映射字符串列表

我正在尝试使用HibernateXML映射文件映射字符串列表。我的班级如下:

public class Historic {
    private String id;
    private String resolution;
    private List<String> names;
    private List<Score> scores;
    private String base;
    private List<Grade> grades;
}

我在文档中读到应该使用<element>标记,但我不知道如何引用Historic类中的特定属性

我认为可能是这样的:

<class name="Historic" table="HISTORIC">
    <id name="id" column="id">
        <generator class="native" />
    </id>

    <property name="resolution" type="string" column="resolution" />

    <element
        name="names"
        column="names"
        type="string"
    />

    ...

</class>

是这样吗


共 (2) 个答案

  1. # 1 楼答案

    假设你有两张桌子(父母和孩子) 你应该这样做->;在你的成绩、分数等方面,你应该定义另一个表格

    下面是hibernate中的XML映射示例

    <class name="Parent" table="Parent">
      <id name="parentId" column="id" type="integer" /> <!  TODO: specify generator  >
      <property name="parentName" type="string" column="name" />
      <bag name="childs" table="Children" inverse="true">
        <key column="parent_id" />
        <one-to-many class="Child" />
      </bag>
    </class>
    
    <class name="Child" table="Children">
      <id name="childId" column="id" type="integer" /> <!  TODO: specify generator  >
      <property name="childName" type="string" column="name" />
      <many-to-one name="parent" column="parent_id" not-null="true"/>
    </class>
    

    但对于列表,您也可以使用@ElementCollection annotation。 像这样:

    @ElementCollection
    @CollectionTable(name="Nicknames", joinColumns=@JoinColumn(name="user_id"))
    @Column(name="nickname") // nickname is the name of String field.
    public List<String> getNicknames() { ... } 
    

    要获取有关集合的更多信息:http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#collections-ofvalues

    我希望这对你有帮助