我正在尝试执行以下操作(cb = CriteriaBuilder):
cb.between(
cb.currentTimestamp(),
kampanjeArtikkelPriser.get(KampanjeArtikkelPris_.overstyrtSalgsprisPeriodeFra),
kampanjeArtikkelPriser.get(KampanjeArtikkelPris_.overstyrtSalgsprisPeriodeTil)),
但是我收到以下语法错误:
- 绑定不匹配:CriteriaBuilder类型(Expression<?extends Y>,Y,Y)之间的通用方法不适用于参数(Calendar,Path< Calendar>,Path< Calendar>)。推断类型 路径<日历>不是有界参数的有效替代< Y extends Comparable<?超级Y>>
- 绑定不匹配:CriteriaBuilder类型(Expression<?extends Y>,Expression<?extends Y>,Expression<?extends Y>)之间的通用方法不适用于参数(Expression< Timestamp>, 路径< Calendar>,Path< Calendar>)。推断类型Object& Serializable& Cloneable& Comparable<?扩展了Object& Serializable& Cloneable& Comparable<?>>不是有界参数< Y extends的有效替代 可比&LT ;?超级Y>>
是否可以转换Expression< Timestamp>到表达式< Calendar>?我似乎有点陷入困境,因为我还没有办法做到这一点,而且据我所知,我也没有其他选择。更改实体java类型不是一个选项,因为这是一个有点大的系统,我不知道会产生什么样的影响。
答案 0 :(得分:0)
似乎一个好的选择是做以下事情:
Calendar now = Calendar.getInstance();
cb.and(
cb.lessThanOrEqualTo(kampanjeArtikkelPriser.get(KampanjeArtikkelPris_.overstyrtSalgsprisPeriodeFra), now),
cb.greaterThanOrEqualTo(kampanjeArtikkelPriser.get(KampanjeArtikkelPris_.overstyrtSalgsprisPeriodeTil), now)
)