【发布时间】:2013-09-11 07:48:40
【问题描述】:
我有 Grails(2.2.1) 项目,想用 Hibernate 创建简单的“模型”类
@Entity
@Table(name="User")
class User {
static mapping = {
datasource 'system'
}
@Id
@GeneratedValue
@Column(name="id")
private Long userId;
@Column(name="email", nullable=false)
private String email;
public User(){
}
@Transient
public Long getUserId(){
return this.userId;
}
@Transient
public String getEmail(){
return this.email;
}
}
但我收到以下错误:
Caused by MappingException: Could not determine type for: org.springframework.validation.Errors, at table: user, for columns: [org.hibernate.mapping.Column(errors)]
->> 334 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 166 | run in java.util.concurrent.FutureTask
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . in java.lang.Thread
当我删除所有休眠注释时,应用程序部署在服务器上,但表用户只有两个属性(id、版本)。
感谢您的帮助!
【问题讨论】:
-
小问题:为什么是 Hibernate,而不仅仅是一个“普通”域对象?
-
我习惯使用 hibernate(来自其他项目),现在我在 grails 中有项目 - 所以我想知道是否可以“绑定 grails 和 hibernate”
-
不确定您的意思。 Grails 在后台使用 Hibernate,所以它已经“绑定”了。如果您在“grails-app/domain”目录中创建用户类,它将使用 Hibernate 自动持久化。
-
问题“几乎”解决了。我在“grails domain”文件夹中创建我的域类。当我将它们移动到 java 类的“标准”文件夹中时,应用程序已成功构建/部署。 Hibernate 只是不在数据库中创建表 - 但这只是数据源的问题(在部署 hibernate 时试图从日志中创建表,但它不成功)。
-
你需要通过这个page。简而言之,您还需要
hibernate.cfg.xml。如果可行,我第二次@ErikPragt 使用域类。熟悉它会帮助你从长远来看。 走出不适区,享受 Grails 和 GORM 的幸福。这就是为什么我们在使用 Grails 时会说“搜索结束”。