标签: grails-orm

使用Grails GORM独立版

我目前想知道如何在Grails框架之外使用Grails独立的Groovy ORM层.这样做有一个文档条目,但ZIP文件只链接到一个空页面.我下载了Grails 1.2-M3但我在文档中找不到任何内容.

有谁知道目前的状态是什么以及如何实现这一目标?

orm grails groovy grails-orm

12
推荐指数
1
解决办法
5799
查看次数

在Grails中将主键ID更改为String类型

我的Grails 2.0应用程序定义了一个用户域对象:

class User {

static mapping = {
    table "dt_user"
    columns {
      id column:'user_id', generator:'assigned', type:'string'
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的BootStrap文件中保存新用户时,如下所示:

def user = new User(id: "smith").save(failOnError:true)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

| Error 2012-01-13 10:09:42,659 [main] ERROR property.BasicPropertyAccessor  - IllegalArgumentException in class: User, setter method of property: id
| Error 2012-01-13 10:09:42,660 [main] ERROR property.BasicPropertyAccessor  - expected type: java.lang.Long, actual value: java.lang.String
Run Code Online (Sandbox Code Playgroud)

我也尝试将User类更改为:

class User {
    static mapping = {
        table "dt_user"
        columns {
            id column:'user_id', generator:'assigned', type:'string', name:'id'
        }
    }

    String id 
} …
Run Code Online (Sandbox Code Playgroud)

grails grails-orm

12
推荐指数
1
解决办法
1万
查看次数

如何在Grails中搜索其集合包含其他元素的元素?

假设我有一个名为"User"的域类,它可以跟随其他"User"对象.它这样做有一个字段指定为:

def hasMany=[followedUsers:User]
Run Code Online (Sandbox Code Playgroud)

我需要反向(找到跟随特定User对象的所有User对象)而不设置反向关系,因为它不是经常执行的用例.我尝试使用闭包做这样的事情:

User.findAll { it.followedUsers.contains(userInstance) }
Run Code Online (Sandbox Code Playgroud)

但这始终会返回数据库中的所有用户,无论他们的跟随状态如何.我尝试使用HQL,但也失败了.

有人能给我一个快速指针,指出最简单的方法吗?谢谢.

collections grails grails-orm

12
推荐指数
1
解决办法
3591
查看次数

Grails 2.0中的dateCreated,lastUpdated字段

我有一个使用Grails 1.3.7的应用程序,我刚刚迁移到Grails 2.0.该应用程序使用自动dateCreatedlastUpdated字段来管理与创建和修改对象相关的时间戳.升级后,我收到以下错误:

| Running Grails application
| Error 2012-01-29 22:36:53,504 [Thread-8] ERROR util.JDBCExceptionReporter  - ERROR: null value in column "date_created" violates not-null constraint
| Error 2012-01-29 22:36:53,510 [Thread-8] ERROR events.PatchedDefaultFlushEventListener  - Could not synchronize database state with session
Run Code Online (Sandbox Code Playgroud)

在我的Domain Classes中注释掉上述字段会使问题消失.

dateCreatedlastUpdated字段Grails的2.0被弃用?如果是这样,这是否意味着我必须编写代码来手动处理此功能或将代码移动到某种类型的插件,如audit-trail插件?

grails grails-orm grails-domain-class grails-2.0

12
推荐指数
2
解决办法
2万
查看次数

更新Grails中父域类中的"lastUpdated"字段

我有一个父域类,它有hasMany另一个域类.父域和子域类都具有lastUpdateddateCreated字段.我的问题是,当我更新子域类时,我需要父域类来反映该更改并更新其lastUpdated字段.

Grails提供的父和子之间是否有任何映射或其他配置可以实现此功能?

更新

我将以下行添加到子域类:

def beforeUpdate = {
    parent.lastUpdated = new Date()
}
Run Code Online (Sandbox Code Playgroud)

我还必须在控制器中确保当我更新一个孩子时,我还必须保存父母以保持新lastUpdated字段.这似乎工作正常,但我仍然想知道是否有映射或类似的东西会这样做.

grails grails-orm grails-domain-class

12
推荐指数
1
解决办法
2998
查看次数

GORM的'静态瞬态'和'瞬态类型aField'声明之间有什么区别吗?

让我们考虑两个Grails域示例类.

第一节课:

class Person {

    String name
    Integer counter = 0

    static transients = ['counter']
}
Run Code Online (Sandbox Code Playgroud)

第二课:

class Vehicle {

    String name
    transient Integer counter = 0
}
Run Code Online (Sandbox Code Playgroud)

PersonVehicle之间的Integer计数器字段的GORM持久性或域类行为是否会有任何差异?

编辑:我知道Person类是Grails docs引用的好方法.但是我更喜欢Vehicle类的方式,因为在阅读代码时它似乎更容易被忽视.

grails persistence grails-orm transient

12
推荐指数
1
解决办法
2864
查看次数

什么意味着Hibernate的"未保存的值映射是不正确的"?

有一个着名的例外:

org.hibernate.StaleObjectStateException:行已被另一个事务更新或删除(或未保存的值映射不正确):[my.Entity#123456]

当"行被另一个事务更新或删除"时,这是一种非常熟悉的情况.

但是什么意味着另一种可能性 - "未保存的值映射是不正确的"?如何故意重现这种情况?

Grails 2.2.0

hibernate grails-orm

12
推荐指数
1
解决办法
1万
查看次数

GORM级联保存取决于字段名称?真?

我有以下安排的课程:

class A {
    static belongsTo = [c: C]
    B b
}

class B {
    static belongsTo = [c: C]
}


class C {
    static hasMany = [bbs: B, aas: A]
}
Run Code Online (Sandbox Code Playgroud)

如果我现在创建这些类的实例...

B b = new B()
A a = new A()
a.b = b

C c = new C()
c.addToBbs(b)
c.addToAas(a)
Run Code Online (Sandbox Code Playgroud)

...并尝试保存c ...

c.save()
Run Code Online (Sandbox Code Playgroud)

......我得到了org.hibernate.TransientObjectException Message object references an unsaved transient instance - save the transient instance before flushing: B.

我认为GORM所做的是首先将保存级联c.aas,然后它会绊倒a.b尚未保存的实例.因此例外.

现在 …

grails hibernate cascade grails-orm

12
推荐指数
1
解决办法
166
查看次数

告诉GORM不要坚持财产

有没有办法告诉GORM不要坚持财产?我打算在我的User类上定义一个确认密码属性,我将用于验证,但不应该保留.

grails grails-orm

11
推荐指数
1
解决办法
1万
查看次数

Grails GORM MySQL生成TEXT或LONGTEXT列

我正在使用Grails 2.1.1MySQL 5.5.27 Community Server.

我需要一个Domain类字段生成一个TEXT或LONGTEXT列.

我觉得这很简单,我看过很多例子:

Grails域类,字符串字段TEXT和LONGTEXT

如何生成TEXT而不是LONGTEXT数据类型或列

但是,我整晚都遇到了死胡同.我遵循了所有这些例子,似乎都没有工作(即使其他人报告它有效).

以下是我创建的域类示例:

class Coltest {

    static constraints = {
        description1 sqlType: 'longtext'
        description2 sqlType: 'text'
        description3 type: 'text'
        description4 column: "longDescription", type: "text", nullable:true
    }

    String description1
    String description2
    String description3
    String description4
}
Run Code Online (Sandbox Code Playgroud)

这是我在MySQL命令界面中得到的:

mysql> describe coltest;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| …
Run Code Online (Sandbox Code Playgroud)

mysql grails grails-orm grails-2.0

11
推荐指数
1
解决办法
7491
查看次数