【问题标题】:Groovy Griffon with Hibernate4 plugin class not found exception未找到带有 Hibernate4 插件类的 Groovy Griffon 异常
【发布时间】:2012-11-20 06:11:14
【问题描述】:

我一直在寻找一种快速简便的方法来编写一个跨平台的桌面应用程序。这让我想到 JVM 是我应该去的地方。由于我的工作场所使用了 Groovy (Grails),所以我想我会尝试 Griffon,因为他们声称它本质上是用于桌面的 Grails。

我想要一个持久性管理层,但在这个环境中 GORM 似乎还没有准备好,所以我使用 Griffon 的 Hibernate4 插件转向休眠。

并不是说我真的使用过 Hibernate,但是根据指南,我相信我做的事情是正确的。我的聚会表明这不支持注释来连接类,所以我使用的是 hbm.xml 文件。

为插件提供的sample 并不复杂,但我不明白我在哪里偏离。

这是一个示例类文件:

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>

编辑:我已经删除了所示的括号和空格。在数据库端将 DataSource.groovy 更改为“创建”。仍然遇到同样的问题。 hibernate 与 griffon/hsqldb/groovy 集成的示例缺乏详细信息。我是否需要为模型文件创建所有给定属性才能正确解析?我从来没有使用过休眠。也不时髦。也不是狮鹫。如果我能解决这个问题,我肯定会为社区提供反馈,否则我会推出自己的 ORM,因为这是一个相当小的项目。而不是我自己。

【问题讨论】:

    标签: groovy griffon hibernate-4.x


    【解决方案1】:

    你真的用[]包裹了字符串吗?

    我怀疑对于定义为

    的类
    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>
    

    【讨论】:

    • 表名是用空格定义的吗?括号只是我正在尝试的东西。这些字符串最初没有,但仍然会产生错误。
    • PS:我应该补充一点,数据库是基于 HSQLDB 的,最初是在 LibreOffice 中设计的。表名中有空格。
    • 我可以确认表名中有空格会导致奇怪的问题,无论是 HSQLDB 还是 H2。
    • 您是否找到任何解决方案,或者您是否必须重命名您的表格?
    • 我重命名了表格以避免出现任何空格和非字母数字字符。
    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多