2017-01-23 10 views
1

Ich nutze die Interoperabilität zwischen Scala und Java und habe den folgenden Code, der Scala verwendet, um eine Klasse in demselben Projekt zu erstellen, die in Java geschrieben wurde. Der CommandExecutor Parameter wird von einer übergeordneten Klasse geerbt.Scala kann Konstruktor nicht auflösen

class IdmIdentityServiceImpl extends ServiceImpl with IdmIdentityService { 
    override def createNativeUserQuery: NativeUserQuery = { 
     new NativeUserQueryImpl(commandExecutor) 
     } 
} 

Ich erhalte eine Fehlermeldung, NativeUserQueryImpl in instanziieren, der sagt cannot resolve constructor

NativeUserQueryImpl wurde in Java geschrieben, aber ich habe über die Interoperabilität zwischen Java und Scala zu lesen und fühlen, wie es funktionieren sollte.

Dies ist die NativeUserQueryImpl Klasse, die in diesem Konstruktor CommandExecutor Typ einnimmt. Die Klasse stammt aus der Bibliothek für fließfähige Module.

public class NativeUserQueryImpl extends AbstractNativeQuery<NativeUserQuery, User> implements NativeUserQuery { 

    private static final long serialVersionUID = 1L; 

    public NativeUserQueryImpl(CommandContext commandContext) { 
    super(commandContext); 
    } 

    public NativeUserQueryImpl(CommandExecutor commandExecutor) { 
    super(commandExecutor); 
    } 

    // results //////////////////////////////////////////////////////////////// 

    public List<User> executeList(CommandContext commandContext, Map<String, Object> parameterMap, int firstResult, int maxResults) { 
    return commandContext.getUserEntityManager().findUsersByNativeQuery(parameterMap, firstResult, maxResults); 
    } 

    public long executeCount(CommandContext commandContext, Map<String, Object> parameterMap) { 
    return commandContext.getUserEntityManager().findUserCountByNativeQuery(parameterMap); 
    } 

} 

EDIT:

Voll Fehler

Error:(31, 5) overloaded method constructor NativeUserQueryImpl with alternatives: 
    (x$1: org.flowable.idm.engine.impl.interceptor.CommandExecutor)org.flowable.idm.engine.impl.NativeUserQueryImpl <and> 
    (x$1: org.flowable.idm.engine.impl.interceptor.CommandContext)org.flowable.idm.engine.impl.NativeUserQueryImpl 
cannot be applied to (org.flowable.engine.impl.interceptor.CommandExecutor) 
    new NativeUserQueryImpl(commandExecutor) 
+0

Wo ist 'commandExecutor' definiert? – nmat

+0

@nmat im selben Projekt – Rafa

+0

Es ist von einer Elternklasse geerbt. Ich füge die vollständige Klassensignatur hinzu, in der dies enthalten ist. Es ist in 'ServiceImpl' – Rafa

Antwort

0

Von den vollständigen Fehlern in der ursprünglichen Frage gestellt, scheint es, dass die CommandExecutor, die von der übergeordneten Klasse geerbt wird ServiceImpl hat zwei verschiedene Versionen in die Bibliothek

org.flowable.idm.engine.impl.interceptor.CommandExecutor und org.flowable.engine.impl.interceptor.CommandExecutor, wo der feine Unterschied ist, dass man von einem idm Paket ist und man nicht ist.

Das Ändern von ServiceImpl aus dem zweiten Paket in das erste, aktualisiert den CommandExecutor Parameter, der übergeben wird, und behebt das Problem.