我编写了以下查询并在pgAdmin中执行:
protected Selection<?>[] buildSelection() {
Selection<?>[] arr = {
queryRoot.get(Contractor_.id),
queryRoot.get(Contractor_.shortName),
cb.max(
cb.selectCase().when(cb.equal(joinA.get("name"),"Nr"),joinCta.get(AttributeToContractor_.attributeValue))
),
queryRoot.get(Contractor_.vat),};
return arr;
}
我得到了我想要的东西。现在我尝试“翻译”ro JPA no-SQL(CriteriaBuilder) 我在SELECT中遇到“MAX”问题,因为当我尝试这个时:
required: javax.persistence.criteria.Expression<N>
found: javax.persistence.criteria.Expression<java.lang.Object>
reason: inferred type does not conform to upper bound(s)
inferred: java.lang.Object
upper bound(s): java.lang.Number
我有这个例外:
class ReminderWorker
include Sidekiq::Worker
def perform(args)
reminder = Reminder.find(args['id'])
reminder.activate = true
PrivatePub.publish_to("reminder", message: reminder)
reminder.save
end
end
当然,我理解我不能使用Object,因为它预示着Integer。 对此有什么解决方案吗?除了“MAX”之外的其他功能,它给出了与sql查询相同的结果? 我问,因为我将使用两个带有大小写的列而不是查询给我重复的记录,只有一个区别,在“Nr”列中,一次将是值,下面将是空的,并且在secand列中将是相同的问题但是相反。 / p>
有什么想法吗?