Grails Map域类列名称问题

时间:2017-09-21 08:23:37

标签: grails

我有一个MS SQL DB(我无法改变)有3个表:

contact  
id, name, number
c_group  
id,name,email
contact_group  
id, contact_id, group_id  

在Grails中我有3个域类:

class Cgroup {  
    String name
    String email

    static constraints = {
    }

    static mapping = {
        table name: "c_group"
        version false
    }   
}
class Contact {
    String name
    String number

    static constraints = {
        name nullable:false
    }

    static mapping = {
        version false
    }
}
class Contact_group {
    Cgroup cgroup
    Contact contact

    static constraints = {
    }

    static mapping = {
        version false
        cgroup_id column: "c_group_id", sqlType: "int" 
    }
}

我尝试使用以下方法创建列表: -

def contactInstance = Contact.get(id)  //I have previously got the id

List userGroupList = Contact_group.createCriteria().list(params) {            
    eq("contact", contactInstance)
}

它正在抛出错误

  

无效的列名' cgroup_id' .. Stacktrace如下:

正如您所看到的,我正在尝试映射正确的列名称(在Contact_group域类中),因为该表已从group重命名为c_group数据库,只是因为某些原因使问题复杂化我决定在我的Grails应用程序中调用域类Cgroup。 (如果需要,我可以改变它)

所以,我现在对如何最好地创建列表感到困惑。有什么建议或指示吗?

1 个答案:

答案 0 :(得分:1)

在您的映射中,您应该指向类属性(var previousPosition $(window).scroll(function(){ var currentScrollPosition=$(window).scrollTop() + $(window).height() if (currentScrollPosition>previousScrollPosition) { console.log('down') }else if(currentScrollPosition<previousScrollPosition){ console.log('up') } previousScrollPosition=currentScrollPosition }); 应该是cgroup_id,因为这是您在域中命名的。)

此外,表格中的列名称为cgroup而不是id,因此您应将列设置为c_group_id

id