标签: grails-orm

使用GORM在Grails中使用一对多引用有效地检索对象

我试图确定如何有效地找到/检索/加载对象.)最小化对数据库的调用和b.)保持代码尽可能优雅/简单(即不编写hql等).

假设您有两个对象:

public class Foo {
    Bar bar
    String badge
}

public class Bar {
    String name
}
Run Code Online (Sandbox Code Playgroud)

每个Foo都有一个酒吧和徽章.还假设所有徽章在条形图中都是唯一的.因此,如果Foo的徽章为"4565",则没有其他Foos具有相同的徽章#和相同的栏.

如果我有一个酒吧ID,我怎样才能有效地检索Foo而不先选择Bar?

我知道我可以这样做:

Foo.findByBadgeAndBar("4565", Bar.findById("1"))  
Run Code Online (Sandbox Code Playgroud)

但这似乎导致Bar表上的select,然后是Foo表上的select.换句话说,我需要生成以下Grails/Hibernate/GORM:

select * from foo where badge="4565" and bar_id="1"
Run Code Online (Sandbox Code Playgroud)

sql grails hibernate hql grails-orm

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

的grails/GORM/MySQL的/休眠

我有一个简单的问题.我一直在努力学习Grails,我设法使用Grails/Gorm 做一个简单的应用程序.

1)后来,我决定使用Mysql而不是Gorm - 我只需要配置'DataSource'并下载驱动程序.

2)所以,如果我想在这两者之间使用hibernate(Grails和MYSQL):http: //www.grails.org/doc/latest/guide/15.%20Grails%20and%20Hibernate.html,我需要制作一个'hibernate.cfg.xml'文件,并指定我的mysql数据库url,user,pw等..我必须映射Grails for MySql列中的每个Class.

那么1)和2)之间的区别是什么?以及hibernate到底做了什么.尽可能举例

PS.如果我说错了,请纠正我,我对此有点新意

mysql grails hibernate grails-orm

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

仅将一些属性绑定到grails域对象上?

我有这样的地图:

['var1':'property1', 'var2':'3']

和这样的一个类:

class MyClass{
   MyEnum var1
   int var2
   String var3
}
enum MyEnum{
   PROP1( "property1" )
   PROP2( "property2" );

   private final String variable;

   public MyEnum( String variable ){ this.variable = variable }
   public String getVariable(){ return variable }
}
Run Code Online (Sandbox Code Playgroud)

我想只是尝试绑定var1,并var2到一些现有的对象得到验证,但我要如何做到这一点?

validation grails groovy hibernate grails-orm

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

Grails:指定域类中整数的位数

有没有比验证器更好的方法来强制执行整数,例如2位数?

在我的幻想世界中,我会做这样的事情:

class FantasyDomainClass{
  Integer[2] twoDigitInteger  //fantasy world knows I mean base 10
}
Run Code Online (Sandbox Code Playgroud)

也许BigInteger?

基于提出的答案,我在考虑我可能不需要整数,因为'01'是可接受的值.

validation grails integer digits grails-orm

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

Grails - 慢速删除

我有一个包含一组用户域对象的组域对象该组对象可能有200,000个用户.

在测试这个时,我发现用groupModel.delete(flust:true)删除这个组甚至删除组对象groupModel.users.clear()上的所有用户时有200,000个用户非常慢组域对象有级联:为用户设置'all-delete-orphan'

有没有人对如何加速这些删除操作有任何建议

grails grails-orm

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

找到了grails中集合异常的共享引用

我对以下代码行有一个例外:

  def order = new PostOrder(pOrder: "post", posts: status, children: lookupPerson().children)
Run Code Online (Sandbox Code Playgroud)

lookupPerson().children给出了一组具有不同id的2个Child实例

完整的例外是:

  org.hibernate.HibernateException: Found shared references to a collection: com.fyp.timeline.PostOrder.children
at com.fyp.timeline.ProfileController$$ENwi3LDE.updateStatus(ProfileController.groovy:134)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Run Code Online (Sandbox Code Playgroud)

我真的很困惑.主要是因为它曾经常常工作并随机停止.我已经为MySql和一个新数据库添加了一个新用户,但这不应该影响这个.

grails grails-orm

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

Strange Grails行为在bootstrap中填充List

我对一个奇怪的Grails行为感到疯狂.

我得到一个域类用户:

class User {

    String firstName
    String token
    List roles = [] as List

    static constraints = {
    }
}
Run Code Online (Sandbox Code Playgroud)

我像这样修改我的BootStrap.groovy来填充5个用户实例:

class BootStrap {

    def init = { servletContext ->
        switch (Environment.getCurrent()) {
            case 'DEVELOPMENT':
                def user1 = new User(
                    id: 1,
                    firstName: 'Enricot',
                    token: 'L\'abricot'
                )
                user1.roles.add('ROLE_USER')
                user1.save(failOnError: true)
                def user2 = new User(
                    id: 2,
                    firstName: 'Arnaud',
                    token: 'Dauphin')
                user2.roles.add('ROLE_USER')
                user2.roles.add('PERM_WRITE')
                user2.save(failOnError: true)
                def user3 = new User(
                    id: 3,
                    firstName: 'Magalie',
                    token: 'La banane')
                user3.roles.add('ROLE_USER')
                user3.roles.add('PERM_READ') …
Run Code Online (Sandbox Code Playgroud)

grails grails-orm

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

在GORM中使属性不可变

我想在GORM中创建一个不可变的属性.因此,一旦设置,它就无法更改.例如,产品sku或个人的社会安全号码.建议的方法是什么?

grails grails-orm

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

Grails findBy没有使用Or/And Condition的组合

我正在使用Grails应用程序.我正在为我的grails应用程序使用Apache Shiro安全性插件.我试图使用OrAnd条件findBy在我的User域类上使用查询,但它给了我一个错误.

我的域类

class ShiroUser {
      String firstName
      String lastName
      String username
      String email
      String passwordHash
      String userStatus

      static hasMany = [ roles: ShiroRole, permissions: String ]

      static constraints = {
          username(nullable: false, blank: false, unique: true)
          email(nullable: false, blank: false, email: true,unique: true)
     }}
Run Code Online (Sandbox Code Playgroud)

我执行了以下查询:

ShiroUser.findByUsernameOrEmailAndUserStatus(params?.username,params?.username,'Active')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Message: No property found for name [usernameOrEmail] for class [class com.chatportal.ShiroUser]
Run Code Online (Sandbox Code Playgroud)

但是,如果我只用Or条件执行查询,那么它工作正常.

ShiroUser.findByUsernameOrEmail(params?.username,params?.username)
Run Code Online (Sandbox Code Playgroud)

任何人都请帮助我,什么是错我的病情,当我用或者条件与findBy?

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

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

在另一个实体中通过id查找grails GORM

我在grails映射中有2个实体

产品和资产

我需要获得产品ID等于x且资产类型等于y的资产

我试过了

Asset.findByProductIdAndAssetType(productId, assetType) 
Run Code Online (Sandbox Code Playgroud)

但不起作用

独特的解决方案是

按ID加载产品,按产品加载查找

def product = Product.findById(productId)
Asset.findByProductAndAssetType(product, assetType) 
Run Code Online (Sandbox Code Playgroud)

有没有办法只使用productId加载资产?

grails grails-orm

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