下面的GORM(grails)标准是什么;什么是SQL?

下面的GORM(grails)标准是什么;什么是SQL?,sql,hibernate,grails,gorm,Sql,Hibernate,Grails,Gorm,grails GORM的SQL标准是什么 订单表: 医嘱ID 客户ID 订单日期 客户表: 客户ID 客户名称 联系人姓名 国家 请注意,“订单”表中的“CustomerID”列引用了 “Customers”表中的“CustomerID”。两者之间的关系 上面的两个表是“CustomerID”列。 然后,我们可以创建以下SQL语句(包含内部联接),用于选择两个表中具有匹配值的记录:strong text Sql将使用这些列生成这些数据 医嘱ID 客户名称 订单日期 GORM模型: c

grails GORM的SQL标准是什么

订单表:

  • 医嘱ID
  • 客户ID
  • 订单日期
客户表:

  • 客户ID
  • 客户名称
  • 联系人姓名
  • 国家
请注意,“订单”表中的“CustomerID”列引用了 “Customers”表中的“CustomerID”。两者之间的关系 上面的两个表是“CustomerID”列。 然后,我们可以创建以下SQL语句(包含内部联接),用于选择两个表中具有匹配值的记录:strong text

Sql将使用这些列生成这些数据

  • 医嘱ID
  • 客户名称
  • 订单日期
GORM模型:

class Order{

Long orderId
Long customerId
def orderDate
}

class Customer{

Long customerID
Long customerName
def contactName
def country
}




我正在做一些猜测,以创建一个与您在这里描述的持久性模型相匹配的对象模型

class Customer {
    String customerName
    String contactName
    String country

    static mapping = {
        table 'Customers'
        version false
        id column: 'CustomerID'
        customerName column: 'CustomerName'
        contactName column: 'ContactName'
        country column: 'Country'
    }
}
执行如下查询:

Order.findAll {
    createAlias 'customer', 'cust'
    projections {
        property 'id'
        property 'orderDate'
        property 'cust.customerName'
    }
}
select this_.OrderID as y0_, this_.OrderDate as y1_, cust1_.CustomerName as y2_ from Orders this_ inner join Customers cust1_ on this_.CustomerID=cust1_.CustomerID
这将产生如下SQL:

Order.findAll {
    createAlias 'customer', 'cust'
    projections {
        property 'id'
        property 'orderDate'
        property 'cust.customerName'
    }
}
select this_.OrderID as y0_, this_.OrderDate as y1_, cust1_.CustomerName as y2_ from Orders this_ inner join Customers cust1_ on this_.CustomerID=cust1_.CustomerID

到目前为止,您尝试了什么但没有成功?您显示的SQL对应于您的持久性模型,它可能直接映射到您的对象模型,也可能不直接映射到您的对象模型。当使用GORM表达查询时,总是根据对象模型而不是持久性模型来表达查询。要确定如何表达查询,您需要显示
订单
类与
客户
类(或映射到这些表的任何类)的关系。您是否有一个名为
Orders
的类,该类中有一个名为
OrderDate
的属性,该属性引用另一个名为
Customers
的类的实例?Details@JeffScottBrownQuestion更新了详细信息@JeffScottBrown@Tanvir. 您描述的是持久性模型,而不是对象模型。GORM要求您根据对象模型表达查询。您是否有一个Orders类,该类中有一个名为OrderDate的属性,该属性引用另一个名为Customers的类的实例?我询问的是类,而不是表。此代码满足问题中所述的要求,我假设您需要预测,因为您正在检索
CustomerName
,而不是
Country
ContactName
。我的订单模型对象类似于类
订单{Long customerId Date orderDate静态映射={table'Orders'id列:'OrderID'orderDate列:'orderDate'}}
gorm模型添加到问题中您在问题中发布的模型与您表示为需求的SQL不一致。列名不匹配。您真的只是想知道如何检索
Order
实例及其关联的
Customer
?如果是,只需调用
Order.list()
@Tanvir祝你好运!