当前位置: 首页 > 知识库问答 >
问题:

Grails 3. x:重用JPA/Hibernate域类:找不到域类

元嘉木
2023-03-14

我有一个Spring 4.1.0后端应用程序,其中域类用JPA注释(使用Hibernate 4.3.5作为持久性提供者),使用Maven作为构建工具。我现在想向这个应用程序添加一个web前端组件,并决定使用Grails 3。x作为我的web框架。我想用Grails重用现有的JPA注释域类,然后使用generate all为每个域模型创建控制器和视图。我的第一个里程碑目标是从这个web应用程序中获得旧域模型的基本CRUD功能。

根据我在Grails文档和一些旧的博客帖子以及一些稍微相关的SO帖子中找到的信息,我创建了一个新的Grails项目,并将我现有的项目打包为一个jar并安装了它(确切地说,我运行了mvn安装-DskipTests),然后将其添加到build中。gradle(实际上我最后只想有一个项目,但我想我会先这样做,因为我不想与Maven和gradle在同一个项目中搏斗):

 repositories {
 ...
 mavenLocal()
 ...
}
 dependencies {
 ...

 compile "com.my-company:my-spring-app:1.0.0.CI-SNAPSHOT"
 ...
}

到目前为止,IntelliJ IDEA 14没有警告或错误。然后我创建了grails应用程序/conf/hibernate/hibernate。cfg。xml文件,并尝试将我的一个旧JPA注释实体放入其中:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration SYSTEM
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <mapping package="com.my-company.my-spring-app.domain" />
        <mapping class="com.my-company.my-spring-app.domain.City" />
    </session-factory>
</hibernate-configuration>

这里也没有来自IDE的抱怨。City.java实体类看起来像:

package com.my-company.my-spring-app.domain;

import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 * City generated by hbm2java
 */
@Entity
@Table(name = "city",
     schema = "public",
     uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class City implements java.io.Serializable {

private static final long serialVersionUID = 4674557242772722625L;

@Id
@SequenceGenerator(name = "city_gen",
                   schema = "public",
                   sequenceName = "city_id_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE,
                generator = "city_gen")
@Column(name = "id",
        unique = true,
        nullable = false)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "countryid",
            nullable = false)
// @JoinColumn(name = "country_id", nullable = false)
private Country country;

@Column(name = "name",
        unique = true,
        length = 200)
private String name;
...
}

然后我跳到Grails控制台并尝试为City域类生成控制器和视图:

grails generate-all com.my-company.my-spring-app.domain.City

但我刚刚得到一个未找到的域类错误:

| Error domain class not found for name com.my-company.my-spring-app.domain.City

我很快创建了一个Grails 2.5.0应用程序,将my-spring-app.jar放在lib/中,并再次尝试,看看这是否是“出血边缘”Grails 3.0.1的问题,但得到了相同的结果。

有人知道这里发生了什么吗?如何在Grails 3. x中重用我的旧JPA域类,以便我可以只使用一组域实体保持干燥?

共有1个答案

司徒浩思
2023-03-14

我通过Hibernate解决了一个类似的问题。cfg。xml(不在hibernate子目录中),如mapping-with-hibernate-annotations-in-grails-3-0-1所述。

 类似资料:
  • 我正在使用JPA,并得到以下警告。我对此进行了研究,并理解了为什么需要重写它以及Hibernate如何使用这些方法。不过我还有一个问题: 例外情况:

  • 问题内容: 我刚刚将应用程序中的Hibernate更新为4.3.4(从3.X),这引起了一些问题。第一个是我解决的创建sessionFactory的新方法。 我没有发现的下一个问题是,我现在在org.hibernate.connection.ConnectionProvider上收到ClassNotFoundException 应该注意的是,我在连接池中使用的是BoneCP(0.7.1),该连接池

  • 假设(网站的)用户键入一个随机的、不存在的子域名: 是否可以将它们重定向到[主]域: 问题是,如果用户键入[或拼写错误]子域名,那么当前,它将进入[404]错误页面。然而,我已经提出: 在公园里。htaccess-但是,它不会重定向。是否可以为通配符创建某种重写条件/规则,例如不存在的所有子域?

  • 问题内容: 我正在使用JPA和Hibernate和Postgresql开发应用程序。使用Netbeans向导,我从现有数据库中创建了实体类。这些类之一的摘录如下: 在EJB中,我有: 当我尝试执行时,会产生以下错误: 我知道Postgres对于大写的表名有点烦人,但是如何更改查询以指向“ ADM_TYPES”而不是AdmTypes?这不是应该自动完成吗(毕竟我是从现有数据库中创建实体类的)?代码有

  • 找到了以下场景的部分答案,但需要进一步澄清。 有下列情况: 用java编写的域类 我想做的事情: 创建一个grails应用程序,它可以执行以下操作: 使用java域类作为grails域类 通过GORM将java域类映射到DB 能够从groovy域类创建java域类,以便能够将其发送到java服务器进行处理,然后接收java类响应并将其转换为groovy类,以便使用GORM存储在DB中映射 基本上有

  • 我已经在weblogic 10.3.6中安装了OSB,当我试图通过运行配置来配置OSB域时。cmd文件从位置WL_HOME/common/bin,我面临以下错误。 找不到主类:com。神谕cie。男巫向导控制器。程序将退出。 我的JAVA_HOME设置为jdk1.6。0_45。 有人能告诉我可能是什么问题吗?