好的,我们有一个 Grails 域(有人称之为准域类)类映射到 SQL Server 2008 中的视图。
这是下面的视图:
class DomainView {
Integer someotherKey
Integer someKey
String firstName
String lastName
String otherName
String address
String city
static mapping = {
table name:"domain_view", schema:"sch", catalog: "cat"
version false
}
}
我们正在尝试在视图与键之间进行基本的 SELECT:
int some_key
但是,我们得到的结果不一致。我开始调试,我意识到即使在同一个方法中,完全相同的 Grails 动态 findBy 方法也会为完全相同的键返回不同的结果
DomainView dv = DomainView.findBySomeKey(key)
DomainView dv2 = DomainView.findBySomeKey(key)
DomainView dv3 = DomainView.findBySomeKey(key)
DomainView dv4 = DomainView.findBySomeKey(key)
每个 findBy 都返回不同的结果。有时是正确的,但通常 some_key 值与传入的参数不匹配。
虽然对于返回的项目 some_key 的 val 关闭,但 other_name 或 someother_key 始终相同。
例子:
someother_key some_key other_name
5301 1901 FIRMNAME
5301 2051 FIRMNAME
5301 2052 FIRMNAME
5301 2053 FIRMNAME
所以我们正在搜索 some_key = 1901。我们会随机获取这四个值中的任何一个,但只能从其他 2 个值(someother_key,other_name)相同的列表中获取。
使用 findByAll 还会返回从该组中随机选择的单个值。我假设它会返回一个列表,但它只返回 some_key 可能匹配或不匹配的单个项目。