【发布时间】:2011-09-17 10:26:58
【问题描述】:
我正在将我的 grails 项目从使用 Hibernate XML 迁移到仅在域类中定义的 GORM。在之前的一个 XML 文件中定义了一个映射:
<?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 package="myproj" default-lazy="true">
<class name="Season" table="seasons">
<cache usage="read-only"/>
<comment>Season</comment>
<id name="id" type="long">
<generator class="assigned">
</generator>
</id>
<property name="seasonKey" column="season_key"/>
<many-to-one name="league" class="Affiliation" column="league_id"/>
<many-to-one name="publisher" class="Publisher"/>
// MAP STARTS HERE
<map name="seasonWeeks">
<cache usage="read-write"/>
<key column="season_id"></key>
<map-key column="week" type="int"/>
<one-to-many class="SeasonWeek"/>
</map>
</class>
</hibernate-mapping>
如您所见,它创建了一个 Integer、SeasonWeek 的地图。此代码以前有效。
当我尝试在 GORM 中重新创建地图时,它不起作用。 Grails 1.3.7(我使用的版本)文档指出:
静态的 hasMany 属性定义 内元素的类型 地图。地图的键必须是 字符串。
就我而言,我不希望地图成为字符串。问题:
- 有什么方法可以在这里做我想做的事吗?也许通过使用静态映射变量?
- 如果不是,我必须恢复旧的 Hibernate XML 文件吗?我可以只为我的项目中的一个域类执行此操作,而没有其他的 XML 文件吗?
谢谢。
【问题讨论】:
标签: hibernate grails map mapping