Grails-HQL到CriteriaBuilder
我一直在努力理解如何使用标准构建器。在非常简单的场景中,它们是直截了当的。但是下面的HQL将如何表达呢Grails-HQL到CriteriaBuilder,grails,groovy,hibernate-criteria,Grails,Groovy,Hibernate Criteria,我一直在努力理解如何使用标准构建器。在非常简单的场景中,它们是直截了当的。但是下面的HQL将如何表达呢 def pkg_query = "select p from Package as p join p.orgs as orgRole where p.packageScope=(:scope) and orgRole.roleType=(:roleType) and orgRole.org=(:provider)" 查询的第一部分很简单,但是如何访问列表呢 Package master
def pkg_query = "select p from Package as p join p.orgs as orgRole where p.packageScope=(:scope) and orgRole.roleType=(:roleType) and orgRole.org=(:provider)"
查询的第一部分很简单,但是如何访问列表呢
Package master = c.get {
and {
eq("packageScope",getMasterScope())
//imaginary code, 'and' would probably break it as only 1 match in list
for(orgRole in orgs){
and{
eq(orRole.org,provider)
eq(orgRole.roleType,getCPRole())
}
}
}
}
您可以根据关联对标准进行建模(不管它们的基数如何),方法是将它们作为接收包含标准的闭包的方法调用。对于您发布的查询,它应该是:
Package.createCriteria().get {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以根据关联对标准进行建模(不管它们的基数如何),方法是将它们作为接收包含标准的闭包的方法调用。对于您发布的查询,它应该是:
Package.createCriteria().get {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以根据关联对标准进行建模(不管它们的基数如何),方法是将它们作为接收包含标准的闭包的方法调用。对于您发布的查询,它应该是:
Package.createCriteria().get {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以根据关联对标准进行建模(不管它们的基数如何),方法是将它们作为接收包含标准的闭包的方法调用。对于您发布的查询,它应该是:
Package.createCriteria().get {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以使用下面的代码来获取对象列表
def listOfPackage = Package.createCriteria().list {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以使用下面的代码来获取对象列表
def listOfPackage = Package.createCriteria().list {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以使用下面的代码来获取对象列表
def listOfPackage = Package.createCriteria().list {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
您可以使用下面的代码来获取对象列表
def listOfPackage = Package.createCriteria().list {
eq('packageScope', scope)
orgs {
and {
eq('roleType', roleType)
eq('org', provider)
}
}
}
如果您使用的是MySQL,我建议您激活查询日志并检查生成的SQL,然后您可以更多地使用criterias和HQL,并比较两者的实际查询,确保您实现了实际需要的查询-请参阅。我相信其他数据存储也有类似的选择。如果您使用MySQL,我真的建议您激活查询日志并检查生成的SQL,然后您可以更多地使用criterias和HQL,并比较它们的实际查询,确保您实现了您真正想要的查询-请参阅。我相信其他数据存储也有类似的选择。如果您使用MySQL,我真的建议您激活查询日志并检查生成的SQL,然后您可以更多地使用criterias和HQL,并比较它们的实际查询,确保您实现了您真正想要的查询-请参阅。我相信其他数据存储也有类似的选择。如果您使用MySQL,我真的建议您激活查询日志并检查生成的SQL,然后您可以更多地使用criterias和HQL,并比较它们的实际查询,确保您实现了您真正想要的查询-请参阅。我相信其他数据存储也有类似的选择。