我有一个名为的类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的新手,我正在使用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生成的Mysql查询.
trainingList = PrivateTraining.findAll(query,parameter)
Run Code Online (Sandbox Code Playgroud)
我想打印由上述语句执行的完整的mysql查询.无论如何打印?
我需要一次保存多个对象,如果一个对象无法保存,则回滚所有对象.例如 :
class Transaction {
Item item;
}
class Item {
date lastTransaction;
}
Run Code Online (Sandbox Code Playgroud)
如果我创建新的Transaction,我需要更改lastTransaction值并保存该项.
如果我未能保存该项目,我需要回滚事务(反之亦然).
有任何想法吗?
我有两个与一对多关系相关的域 - 一个用户可能有很多关联.我想查看属于该用户的所有关联.我正在使用脚手架插件.因此,应该返回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()应该只用于排序或者我做错了.你能帮我解决这个问题吗?谢谢!
我正在处理一个项目并且有一个Invoice域类,当前hasOne=[billingAddress:Address] 当我尝试启动我的服务器时,我收到以下错误:
hasOne property [Invoice.billingAddress] is not bidirectional. Specify the other side of the relationship!
Run Code Online (Sandbox Code Playgroud)
我不想分配关系的另一方...发票有一个账单地址但地址不属于发票。地址属于用户!!!
处理这种情况的正确方法是什么?
如果我在域对象上调用 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() 返回什么?
所以我收到了这个错误.我确定它与不兼容的版本有关,但我不知道我做错了什么.
我正在通过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,我希望有一个单向的多对多关系.
在我的应用程序中,员工可以"标记"另一个员工,以便快速访问它们以留下笔记.员工无需知道谁为他们添加了书签.
换句话说,我基本上想拥有一个employee.bookmarks可以用于此的属性.
我有一个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 ×10
grails-orm ×10
groovy ×3
grails-2.0 ×1
hibernate ×1
many-to-many ×1
transactions ×1