带有Map的Hibernate IndexColumn

时间:2011-12-01 11:05:30

标签: hibernate hibernate-mapping

我正在尝试映射集合(类型映射)。

Below are the tables
Product:
  PID -  primary key
  NAME

ProductProperties:
   ID - primary key auto_increment
   PID - FK references Product(ID)(INDEXED)
   KEY - (INDEXED)
   VALUE

以下是用于映射的hbm文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.test.Product" table="product" catalog="cart">
        <id name="pid" type="long">
            <column name="pid" />
            <generator class="assigned" />
        </id>
        <property name="name" type="string">
            <column name="name" length="100" not-null="true" />
        </property>
        <map name="properties" table="properties"  cascade="all">
            <key column="pid" not-null="true"/>
            <map-key column="key" type="string"/>
            <element column="value" type="string"/>
        </map>
    </class>
 </hibernate-mapping>

在许多例子中,我看到的不是。

我对此几乎没有任何疑问。

  1. 为什么使用IndexColumn代替map-key?
  2. 哪个更好? IndexColumn或map-key
  3. 我在哪里可以找到详细的文档来了解IndexColumn和map-key?
  4. 请提前帮助和感谢。

1 个答案:

答案 0 :(得分:0)

你的意思是要问

之间的区别
<map ...>
    <map-key .../>
</map>

<map ...>
    <index .../>
</map>

在运行时,它们的解释完全相同。我猜&lt; index&gt;保持与hibernate 2.0的向后兼容性,他们在&lt; map&gt;中使用了相同的元素。和&lt; list&gt;。在hibernate 3.0中,&lt; map-key&gt;是首选。

对于文档,我只使用引用,但它没有给你太多细节。除非您阅读DTD:http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd