gpt4 book ai didi

grails - 是否可以在两个域类之间进行内部联接?

转载 作者:行者123 更新时间:2023-12-02 15:21:21 24 4
gpt4 key购买 nike

如果我有两个 Realm 类(class)

A类

Class A {
int product_id
int price
String store
}

B类
Class B{
int product_id
String product_desc
}

现在在我的 Controller 中,我想知道是否有一种executequery通过 product_id 进行内部联接以获取产品说明

我不知道这是否是正确的方法,如果我做错了,请指导我使最佳性能成为可能

最佳答案

答案是……这取决于。

如果您通过运行SQL直接访问数据库,则可以,您可以创建内部联接。

A.withNewSession { session ->
session.createSQLQuery('SELECT B.product_desc FROM A INNER JOIN B ON A.product_id = B.product_id' WHERE A.product_id = 1).list()
}

如果这是您想要的,可以在我的文章 here中阅读更多有关它的内容。

但是,由于您正在使用Grails,因此最有可能要使用GORM,它是Grail的对象关系映射器。但是,GORM / Hibernate不允许您像使用SQL一样即时创建连接。您甚至无法使用HQL做到这一点。相反,您需要预先定义域类之间的关联:
Class A {
int product_id
int price
String store
B b
}

Class B{
int product_id
String product_desc
}

在上面的示例中, AB具有多对一关联。因此,一旦有了 A实例,就可以获取其 B:
def a = A.findByProductId(1)
def desc = a.b.product_desc

在这种情况下,我使用了动态查找器,但也有查询,条件查询和HQL。我有关于 here的一系列文章。

注意:上面的代码是一个近似值,因为您发布的域类已经过很好的清理,以至于我无法确定实际情况。但是它应该使您对可能性有一种感觉。

关于grails - 是否可以在两个域类之间进行内部联接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com