Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellij idea Kotlin/IntelliJ-编译器找不到正确的函数参数类型_Intellij Idea_Kotlin - Fatal编程技术网

Intellij idea Kotlin/IntelliJ-编译器找不到正确的函数参数类型

Intellij idea Kotlin/IntelliJ-编译器找不到正确的函数参数类型,intellij-idea,kotlin,Intellij Idea,Kotlin,我正在使用IntelliJ用Kotlin语言(JetBrains)编写代码,我在编译器上遇到一个错误,编译器找不到函数的正确参数类型,总是说函数接收Nothing参数 有人知道问题出在哪里吗 在图中,控制台显示编译器错误,但屏幕中央的帮助显示IntelliJ可以找到函数的正确参数类型,但编译器不能 ===已编辑========================================== Java代码是: @Transactional public int deletar(Bus

我正在使用IntelliJKotlin语言(JetBrains)编写代码,我在编译器上遇到一个错误,编译器找不到函数的正确参数类型,总是说函数接收
Nothing
参数

有人知道问题出在哪里吗

在图中,控制台显示编译器错误,但屏幕中央的帮助显示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;
  }
@Transactional
公共int deletar(BuscaInfo信息){
//----Criando a busca ao banco:
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaDelete query=cb.createCriteriaDelete(info.classe);
Root=query.from(info.classe);
//Cláusula banco在哪里:
谓词[]preds=WhereBuilder.build(cb、root、info.where);
如果(预测长度<1){
抛出新的MSGExpRead(JSOReal.Error)Excel,NULL,“OSPAR,Mealthes de FieldEm DQQueSrand N n o o s s VaaLiDOS);
}
查询。何处(preds);
//布斯卡奥班科银行:
int qtd=em.createQuery(query.executeUpdate();
返回qtd;
}
info.classe
属于
Class
类型

使用Hibernate 5.x和JPA 2.1 api进行编译。

该代码在WildFly 9.x和10.x上运行。

您能检查
q
变量的类型吗?(导航到它,运行alt+q) 我假设它的类型是
CriteriaDelete
,而这些
from
方法中的
都不能被调用,原因与它们在Java中不能对
CriteriaDelete
类型的变量调用的原因相同:我们不能确切地说创建实例时
t
是什么


当然,诊断在这里可能更好。我已经在上面创建了

,谢谢您的回复。是的,
q
变量是
CriteriaDelete
,但这段代码是对我的Java代码的重写,在Java中我称之为
。来自
CriteriaDelete
CriteriaUpdate
的(Class)
方法(不是关于,但我对
CriteriaUpdate
有同样的问题)。如果我不调用这个方法,就会抛出一个exeception,表示需要指定root。多亏了open-an-issue=DIt,这很奇怪,它在Java中工作。你能分享一下相关的Java版本吗?编辑了这个问题,添加了一段用Java编写的代码。谢谢你的帮助。Java代码中有一个棘手的时刻:你使用原始类型
CriteriaDelete查询
,当从
调用
时,它会有效地关闭精确的类型匹配。如果使用
CriteriaDelete
type,则会出现类似错误。在Kotlin中没有原始类型,但您始终可以使用不安全的强制转换,如
(q作为CriteriaDelete)。从(info.classe作为Class)
,这将是Java代码的公平Kotlin版本