1

私は、非常にクロスプラットフォームのデスクトップアプリケーションを作成するための高速で簡単な方法を探していました。これにより、JVMが存在する場所であると考えるようになります。Groovy(Grails)は私の職場で使用されているので、基本的にデスクトップ用のGrailsであると彼らが主張しているので、Griffonを試してみようと思いました。

永続性管理レイヤーが必要でしたが、この環境でGORMがショータイムに対応しているようには見えないため、Griffon用のHibernate4プラグインを使用してHibernateに移行しました。

私が実際にHibernateを一般的に使用したわけではありませんが、ガイドに基づいて、私は物事を正しく行っていると信じています。私の集まりは、これがクラスを接続するためのアノテーションをサポートしていないことを示しているので、hbm.xmlファイルを使用しています。

プラグイン用に提供されているサンプルは複雑ではありませんが、どこから逸脱しているのかわかりません。

現状のサンプルクラスファイルは次のとおりです。

package gwash

import groovy.beans.Bindable

class DeliveryMethodModel {
   // @Bindable String propName
}

スタックトレースの一部を次に示します。

org.hibernate.InvalidMappingException: Could not parse mapping document from res
ource gwash\DeliveryMethod.hbm.xml
        at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Con
figuration.java:3415)
        at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueu
e(Configuration.java:3404)
        at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(C
onfiguration.java:3392)
        at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:
1341)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.jav
a:1737)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.jav
a:1788)
        at org.hibernate.cfg.Configuration$buildSessionFactory.call(Unknown Sour
ce)
        at griffon.plugins.hibernate4.Hibernate4Connector.connect(Hibernate4Conn
ector.groovy:72)
        at griffon.plugins.hibernate4.Hibernate4Connector.connect(Hibernate4Conn
ector.groovy)
        at griffon.plugins.hibernate4.Hibernate4Connector$connect.call(Unknown S
ource)
        at Hibernate4GriffonAddon.addonInit(Hibernate4GriffonAddon.groovy:27)
        at griffon.core.GriffonAddon$addonInit.call(Unknown Source)
        at griffon.core.GriffonAddon$addonInit.call(Unknown Source)
        at org.codehaus.griffon.runtime.util.AddonHelper.handleAddon(AddonHelper
.groovy:155)
        at org.codehaus.griffon.runtime.util.AddonHelper.handleAddonsAtStartup(A
ddonHelper.groovy:105)
        at org.codehaus.griffon.runtime.core.DefaultAddonManager.doInitialize(De
faultAddonManager.java:33)
        at org.codehaus.griffon.runtime.core.AbstractAddonManager.initialize(Abs
tractAddonManager.java:101)
        at org.codehaus.griffon.runtime.util.GriffonApplicationHelper.initialize
AddonManager(GriffonApplicationHelper.java:320)
        at org.codehaus.griffon.runtime.util.GriffonApplicationHelper.prepare(Gr
iffonApplicationHelper.java:123)
        at org.codehaus.griffon.runtime.core.AbstractGriffonApplication.initiali
ze(AbstractGriffonApplication.java:221)
        at griffon.swing.AbstractSwingGriffonApplication.bootstrap(AbstractSwing
GriffonApplication.java:74)
        at griffon.swing.AbstractSwingGriffonApplication.run(AbstractSwingGriffo
nApplication.java:131)
        at griffon.swing.SwingApplication.main(SwingApplication.java:36)
Caused by: org.hibernate.PropertyNotFoundException: field [id] not found on gwas
h.DeliveryMethodModel
        at org.hibernate.property.DirectPropertyAccessor.getField(DirectProperty
Accessor.java:182)
        at org.hibernate.property.DirectPropertyAccessor.getField(DirectProperty
Accessor.java:189)
        at org.hibernate.property.DirectPropertyAccessor.getField(DirectProperty
Accessor.java:189)
        at org.hibernate.property.DirectPropertyAccessor.getField(DirectProperty
Accessor.java:189)
        at org.hibernate.property.DirectPropertyAccessor.getField(DirectProperty
Accessor.java:189)
        at org.hibernate.property.DirectPropertyAccessor.getField(DirectProperty
Accessor.java:174)
        at org.hibernate.property.DirectPropertyAccessor.getGetter(DirectPropert
yAccessor.java:197)
        at org.hibernate.internal.util.ReflectHelper.getter(ReflectHelper.java:2
53)
        at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(Refl
ectHelper.java:229)
        at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.
java:326)
        at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:449)
        at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBi
nder.java:382)
        at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:322)
        at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:173)
        at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Con

私のxmlマッピングファイル:

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="gwash">
    <class name="DeliveryMethodModel" table="[DELIVERY METHODS]">
        <id name="id" column="[DELIVERY METHOD ID]">
            <generator class="increment"/>
        </id>
        <property name="method" column="[DELIVERY METHOD]"/>
    </class>
</hibernate-mapping>

編集:示されているように角かっことスペースを削除しました。DB側でDataSource.groovyを「create」に変更しました。まだ同じ問題が発生しています。griffon / hsqldb / groovyとのHibernate統合の例は、詳細が不足しています。これを正しく解析するには、モデルファイルに指定されたすべてのプロパティを作成する必要がありますか?私は休止状態を使用したことがありません。グルーヴィーでもありません。グリフォンでもありません。これを解決できれば、間違いなくコミュニティにフィードバックを提供します。そうでない場合は、これはかなり小さなプロジェクトであるため、独自のORMをロールバックします。むしろ私自身を転がさないでください。

4

1 に答える 1

3

あなたは実際に文字列をとで包んでい[ます]か?

私は次のように定義されたクラスのためにそれを疑うでしょう

package gwash
import groovy.beans.Bindable
class DeliveryMethodModel {
    Long id
    @Bindable String method
}

マッピングファイルは

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="gwash">
    <class name="DeliveryMethodModel" table="DELIVERY_METHODS">
        <id name="id" column="DELIVERY_METHOD_ID">
            <generator class="increment"/>
        </id>
        <property name="method" column="DELIVERY_METHOD"/>
    </class>
</hibernate-mapping>
于 2012-11-20T08:35:59.637 に答える