标签: grails-orm

带有fetch参数的列表

我有一个名为的类Address,它有一个名为的布尔字段clone.我试图使用Grails list()方法来显示Address类的实例clone = false.我虽然可以使用fetch参数来完成此操作,但它没有按预期工作.而不是仅返回我想要的地址,而是返回Address该类的所有实例.这是我有的:

def list = {
    params.max = Math.min(params.max ? params.int('max') : 10, 100)
    params.fetch = [clone:false]
    [addressInstanceList: Address.list(params), addressInstanceTotal: Address.count()]
}
Run Code Online (Sandbox Code Playgroud)

即使我做它真的很简单,提取仍然无法按预期工作.例如,如果我指定我只想Address用邮政编码"90210" 获取该类的实例,我写了这个,但它仍然给了我所有Address类的实例.

Address.list(fetch:[zip:"90210"])
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

grails groovy grails-orm

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

在Grails的GORM中添加更改侦听器

我是Grails的新手,我正在使用Grails 2.0.1.我想为域类的对象中的更改添加持久性事件侦听器,因此我尝试了用户指南中给出的Bootstrap.groovy中的代码:

def init = {
    applicationContext.addApplicationListener(new FooBarListener())
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

错误context.GrailsContextLoader - 执行bootstraps时出错:没有这样的属性:类的applicationContext:BootStrap

如何从BootStrap类中获取applicacionContext属性?或者文档是否过时,是否有新的/更好的方法来添加域更改侦听器?

提前致谢.

grails grails-orm grails-2.0

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

打印Grails生成的Mysql查询

我想在执行之前或之后获取由grails生成的Mysql查询.

 trainingList = PrivateTraining.findAll(query,parameter)
Run Code Online (Sandbox Code Playgroud)

我想打印由上述语句执行的完整的mysql查询.无论如何打印?

grails grails-orm

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

Grails - 保存多个对象,如果一个对象无法保存,则回滚所有对象

我需要一次保存多个对象,如果一个对象无法保存,则回滚所有对象.例如 :

class Transaction {
  Item item;
}

class Item {
  date lastTransaction;
}
Run Code Online (Sandbox Code Playgroud)

如果我创建新的Transaction,我需要更改lastTransaction值并保存该项.
如果我未能保存该项目,我需要回滚事务(反之亦然).

有任何想法吗?

grails transactions grails-orm

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

使用params的grails域类.list()方法

我有两个与一对多关系相关的域 - 一个用户可能有很多关联.我想查看属于该用户的所有关联.我正在使用脚手架插件.因此,应该返回AssociationController中的关联列表的代码看起来很简单:

def index(Integer max) {
    respond Association.list(params), model:[associationInstanceCount: Association.count()]
}
Run Code Online (Sandbox Code Playgroud)

在用户视图页面上,我有以下代码:

<g:form controller="Association" >
    <fieldset class="buttons">
        <g:hiddenField name="user.id" id="user.id" value="${userInstance.id}"/>
        <g:actionSubmit class="list" action="index" value="${message(code: 'default.list.label', default: 'Show Associations')}"/>
    </fieldset>
</g:form>
Run Code Online (Sandbox Code Playgroud)

当我按下这个动作user.id提交与请求一起发送并且它在params地图内(我用debug检查)但由于某种原因Association.list(params)返回所有关联(对于所有用户),尽管我在params中使用此user.id.A也尝试重命名user.id为just user,它也没有用.看起来像这样.list()应该只用于排序或者我做错了.你能帮我解决这个问题吗?谢谢!

grails grails-orm grails-domain-class

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

grails hasOne 但不属于

我正在处理一个项目并且有一个Invoice域类,当前hasOne=[billingAddress:Address] 当我尝试启动我的服务器时,我收到以下错误:

hasOne property [Invoice.billingAddress] is not bidirectional. Specify the other side of the relationship!
Run Code Online (Sandbox Code Playgroud)

我不想分配关系的另一方...发票有一个账单地址但地址不属于发票。地址属于用户!!!

处理这种情况的正确方法是什么?

grails hibernate grails-orm

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

Grails - 如果保存时验证为假并且域对象无效,那么 save() 会发生什么?

如果我在域对象上调用 save() 但设置了 validate: false 会发生什么?

if (!domainObject.save(validate: false)) {
    def errors = ""
    domainObject.errors.each {
        errors += it
    }
    throw new Exception("Error saving domainObject: ${errors}")
}
Run Code Online (Sandbox Code Playgroud)

我虽然在这里会得到一个异常,因为 save 会返回 null,但我有一个期待异常的测试,但它失败了,因为没有抛出。如果我打开 failOnError 并且不关闭验证,则测试按预期执行。如果对象无效, save() 返回什么?

grails grails-orm

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

java.lang.IllegalStateException:类[coconut.User]不是域类或

所以我收到了这个错误.我确定它与不兼容的版本有关,但我不知道我做错了什么.

我正在通过sdkman这样做,因为我应该...... grails --version给我3.2.11.

2017-06-29 22:17:15.406 ERROR --- [nio-8080-exec-1] o.g.web.errors.GrailsExceptionResolver   : IllegalStateException occurred when processing request: [GET] /user
Either class [coconut.User] is not a domain class or GORM has not been initialized correctly or has already been shutdown. Ensure GORM is loaded and configured correctly before calling any methods on a GORM entity.. Stacktrace follows:

java.lang.reflect.InvocationTargetException: null
        at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:211)
        at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)
        at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
        at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77) …
Run Code Online (Sandbox Code Playgroud)

grails grails-orm grails-domain-class

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

Grails在同一个表中的多对多关系

我正在使用Grails,我希望有一个单向的多对多关系.

在我的应用程序中,员工可以"标记"另一个员工,以便快速访问它们以留下笔记.员工无需知道谁为他们添加了书签.

换句话说,我基本上想拥有一个employee.bookmarks可以用于此的属性.

到目前为止,我已经找到了关于 Grails ORM 的多对多关系文档,但这似乎只是在两个不同的表中.

grails groovy many-to-many grails-orm

0
推荐指数
1
解决办法
806
查看次数

Groovy/Grails如何使构造函数私有 - 正确的方法

我有一个grails的域类,只能使用相同的名称创建一次.为了确保我有一个静态方法getColor和私有构造函数,如下所示:

class Color {
  String name

  static hasMany = [moods: Mood] 

  // not accessible
  private Color() {}

  // not accessible because getColor should be used
  private Color(String name) {
    this.name = name
  }

  static getColor(String name) {
    def color = Color.findByName(name.toLowerCase())
    color ? color : new Color(name).save(flush:true) 
  }

  def beforeValidate() {
    name = name.toLowerCase();
  }
}
Run Code Online (Sandbox Code Playgroud)

确保只使用静态getColor方法创建Color对象,我想让构造函数为private.它到目前为止,我可以创建颜色对象.但是当我使用这个实例来创建Object Mood的对象时

class Mood {

  static belongsTo = [color:Color]

}

def color = Color.getColor('verylightgreen')
def mood = new Mood(color: color)
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

error initializing the …
Run Code Online (Sandbox Code Playgroud)

grails groovy grails-orm

0
推荐指数
1
解决办法
1305
查看次数