【问题标题】:How to integrate hibernate xml mapping of java classes in grails 4?如何在grails 4中集成java类的hibernate xml映射?
【发布时间】:2020-10-14 18:24:06
【问题描述】:

我正在尝试通过我的 grails 应用程序中的休眠 xml 映射配置来映射 POJO。这在 grails 2.x 版本中运行良好,但在 grails 4 中它没有采用位于位置的休眠配置:

grails-app/conf/hibernate.cfg.xml

这是:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        '-//Hibernate/Hibernate Configuration DTD 3.0//EN'
        'http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd'>

<hibernate-configuration>

    <session-factory>
        <mapping resource='com.prabin.test.hbm.xml'/>
    </session-factory>

</hibernate-configuration>

com.prabin.test.hbm.xml 也与 hibernate.cfg.xml 位于同一位置

com.prabin.test.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.prabin.Prabin" table="prabin">
        <id name="id" column="prabin_id">
            <generator class="identity"/>
        </id>
    </class>
</hibernate-mapping>

我的 Pojo 在位置:

src/main/java/com/prabin/Prabin.java

这是:

package com.prabin;

public class Prabin {
    Integer  id;

    // Getters and Setters
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
}

应用程序没有采用休眠配置文件,因此没有为我的 pojo 创建任何表。 Hibernate 配置文件被完全忽略。

【问题讨论】:

  • 使用grails-app/conf/hibernate/目录保存配置文件是否有效?
  • @JeffScottBrown 不,它也不是那样工作的。

标签: java hibernate grails grails-orm grails-4


【解决方案1】:

Grails 支持团队帮我解决了这个问题,过程如下:

hibernate 映射文件:hibernate.mapping.xml 应该在 /src/main/resources 目录中,并在 application.yml 中映射如下:

hibernate:
    mappingLocations: classpath:hibernate.mapping.xml

注意:实体文件应该是一个 groovy 文件,映射了 @Entity 并继承接口 GormEntity 注释以支持 Groovy 的动态查找器。

例子:

@Entity
class Employee implements GormEntity<Employee> {
    Integer id
    String firstName
    String lastName
    Double salary
}

休眠映射:

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name = "com.objectcomputing.example.Employee" table = "EMPLOYEE">

        <meta attribute = "class-description">
            This class contains the employee detail.
        </meta>

        <id name = "id" type = "int" column = "id">
            <generator class="native"/>
        </id>

        <property name = "firstName" column = "first_name" type = "string"/>
        <property name = "lastName" column = "last_name" type = "string"/>
        <property name = "salary" column = "salary" type = "double"/>

    </class>
</hibernate-mapping>

这是完整的工作示例:grails-hibernate-xml-config-example

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2015-10-24
    • 2013-08-15
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多