好的,我们有一个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可能匹配或不匹配的单个项目。