0
我在SRC/Java定義的下面的Java類Grails的約束與Java類和Hibernate映射
package org.davisworld.trip;
public class AirportHbm {
private long id;
private String name;
private String iata;
private String state;
private String lat;
private String lng;
// getters/setters defined
}
我已經定義了hbm.cfg.xml文件中的conf /休眠如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping resource="AirportHbm.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我有AirportHbm.hbm.xml文件配置爲的conf /休眠如下:
<?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="org.davisworld.trip.AirportHbm" table="usgs_airports">
<id name="id" column="airport_id">
<generator class="native"/>
</id>
<property name="name" type="java.lang.String">
<column name="airport_name" not-null="true" />
</property>
<property name="iata" type="java.lang.String">
<column name="locid" not-null="true" />
</property>
<property name="state" />
<property name="lat" column="latitude" />
<property name="lng" column="longitude" />
</class>
</hibernate-mapping>
最後,我公頃在src/java文件夾已經一個AirportHbmConstraints.groovy文件:
package org.davisworld.trip
class AirportHbmConstraints {
static constraints = {
name()
iata(maxSize:3)
state(maxSize:2)
lat()
lng()
}
}
當我嘗試運行應用程序,我得到當春乃發生初始化Web應用程序上下文此錯誤:
Caused by: java.lang.ClassCastException: org.davisworld.trip.AirportHbmConstraints cannot be cast to groovy.lang.Script
教程我最初說的是AirportHbmConstraints.groovy文件不應該有一個類;它應該只是一個腳本:
package org.davisworld.trip
static constraints = {
name()
iata(maxSize:3)
state(maxSize:2)
lat()
lng()
}
但是,當我這樣做,STS給我一個編譯器錯誤:
Groovy:在修改「靜態」這裏不允許。
任何人都知道我在做什麼錯了?將Groovy中的約束應用於Java域類的正確方法是什麼?
非常感謝, 維託
修好了!非常感謝@JamesA – 2012-02-12 23:06:43
p.s.感謝您指出Hibernate文檔。我曾經看過那裏,但顯然不夠堅硬。 – 2012-02-13 00:07:50