在grails中执行查询的域对象是否重要?

时间:2018-01-31 18:02:32

标签: grails hql domain-object

执行查询时使用的域对象是否重要?例如,我有这两个域对象

Class A {
    String name
}

Class B {
    String name
}

如果我想获得所有A对象,我可以执行以下操作

A.executeQuery('FROM A')

但我也可以从不同的域对象调用相同的查询,并获得与此相同的结果

B.executeQuery('FROM A')

这两个陈述表现明智吗?也许在幕后发生的事情会有所不同?

对于更多的上下文,我正在编写一个服务,其中应用程序将动态地执行域对象的查询。所以我可以选择一个基本域对象,然后每次都执行它,或者我可以使用提供给方法的字符串来创建域对象的实例。

由于

2 个答案:

答案 0 :(得分:0)

不,没关系。在这种情况下,它只是执行HQL(休眠查询),并且这两个域类在executeQuery方面的行为完全相同。

在您的特定情况下,我只使用单个域类来执行所有查询。无需更改类型。

答案 1 :(得分:0)

  

执行查询时使用的域对象是否重要?

这取决于您使用的查询技术。对于executeQuery,特别是它没有。对于大多数其他查询技术它。例如,A.executeQuery('FROM A')B.executeQuery('FROM A')相同。 A.list()B.list()不同。 A.findAllByTitle('Tribe')B.findAllByTitle('Tribe')不同,A.where { ... }B.where { ...}不同,等等...