我正在使用 IntelliJ 在 Kotlin 语言(JetBrains)中编写代码,我在编译器上遇到错误编译器找不到函数的正确参数类型,总是说函数接收 Nothing
参数。
有人知道这是什么问题吗?
Print Screen showing the error on IntelliJ IDE
在图像中,控制台显示编译器错误,但是屏幕中心的帮助显示IntelliJ可以找到函数的正确参数类型,但编译器没有。
====编辑==========================================
Java代码是:
@Transactional
public int deletar(BuscaInfo info) {
// ---- Criando a busca ao banco:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaDelete query = cb.createCriteriaDelete( info.classe );
Root root = query.from( info.classe );
// Cláusula WHERE do banco:
Predicate[] preds = WhereBuilder.build(cb, root, info.where);
if (preds.length < 1) {
throw new MsgException(JsonResponse.ERROR_EXCECAO,null,"Os parâmetros de filtragem da QueryString não são válidos.");
}
query.where(preds);
// A busca ao banco:
int qtd = em.createQuery(query).executeUpdate();
return qtd;
}
和info.classe
的类型为Class<?>
。
使用Hibernate 5.x和JPA 2.1 api编译。
该代码适用于WildFly 9.x和10.x。
答案 0 :(得分:2)
请检查q
变量的类型吗? (导航到它,运行alt + q)
我认为它的类型是CriteriaDelete<*>
,并且这些from
方法都不能被调用,原因与它们在CriteriaDelete<?>
类型的变量上不能用Java相同:我们不能说确切地说,在创建实例时T
是什么。
但是,诊断当然可以在这里更好。我在这个
上创建了issue