grails 冷门问题汇总

grails 冷门问题汇总(持续更新中…)

一、遇到domain对象内置的findById方法在service中使用查询不到相对应Id的对象,例如

def update(Book book){
    //这里book为前台修改的book对象
    Book bookTemp = Book.findById(book.id);
}

解决办法:
这里的bookTemp不是对应id的对象,遇到这样的问题是没有在service类上加上@Transactional 注解导致的,根本原因现不明…

二、创建groovy源码类后,引用不了该类

解决办法:
创建源码类时,需要先创建一个directory的文件夹,然后将文件夹转化成源码(即右键点击文件夹后选择make directory as sources root )然后需要在该文件夹下创建一个package(特别强调:此时不能直接创建groovy类,否则会引用不到),在package中再创建自己的groovy类,这样grails就能引入该类了(结论,grails只能正确识别源码文件夹下package中的源码文件类)

三、创建domain时,如果改domain对象没有Id主键,则在使用时会报错

解决办法:
grails默认会约定所有domain,即所有表带有id主键,这应该也是数据库设计所必须的,只有存在一些关系表时才不会带Id,比如用户角色关系表,这时如果需要查询用户所拥有的角色,是无法直接使用用户角色关系表domain去查询的,此时可以在user表中添加如下代码:

class User {

    static constraints = {

    }
    static mapping = {
        table 'user'
        roles column: 'user_id', joinTable: 'user_role_r'
    }

这样就能使用 user.roles拉出所有角色列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值