ich auf mit dem Kommando „IN“ auf mein JPQL einige problens hat, ist hier der Fall: Ich habe diese Klassen:Wie verwende ich den "IN" -Befehl richtig mit JPQL?
public class Empresa{
@Id
@Column(nullable = false, unique = true)
@GeneratedValue
private Long id;
@JoinColumn(name = "id_tipo_empresa")
@OneToOne(cascade = CascadeType.DETACH)
private TipoEmpresa tipoEmpresa;
}
public class TipoEmpresa{
@Id
@Column(unique = true, nullable = false)
@GeneratedValue
private Long id;
private Long valor;
}
Dann habe ich diesen Dienst, die eine Liste der „TipoEmpresa“ sendet zu Abfrage meiner EmpresaRepository suchen:
SERVICE
public List<Empresa> getEmpresasByTipoEmpresaAndTipoStatus(List<TipoEmpresa>tiposEmpresa) {
List<Empresa> listaDeEmpresas=empresaRepository.getEmpresasByTipoEmpresa(tiposEmpresa);
return listaDeEmpresas;
}
REPOSITORY
@Query(name = "SELECT E FROM Empresa E WHERE E.tipoEmpresa IN(:tipoEmpresa)")
List<Empresa> getEmpresasByTipoEmpresaAndTipoStatus(@Param("tipoEmpresa") List<TipoEmpresa> tipoEmpresa);
Wie Sie sehen, ich versuche, alle „Empresa“ zu erhalten, die eine „tipoEmpresa“ aufgeführt auf meiner Liste, aber wenn colling der Service, den ich diesen Fehler:
java.sql.SQLException: Operand should contain 1 column(s)
Ich weiß nicht, was zu tun, versuchte alles was ich denken konnte, was mache ich falsch?
Hallo Dude! Das Wichtigste zuerst, danke fürs Helfen!
. . .
versuchte ich g.Irani Vorschlag, meinen Code geändert, die wie folgt bekommen:
Repository
@Query(name = "SELECT E FROM Empresa E WHERE E.tipoEmpresa.id IN :tipoEmpresa ")
List<Empresa> getEmpresasByTipoEmpresaAndTipoStatus(@Param("tipoEmpresa") List<Long> tipoEmpresa);
Dienst
//just a test...
List<Long> test =Arrays.asList(100l, 200l);
List<Empresa> listaDeEmpresas=empresaRepository.getEmpresasByTipoEmpresa(test);
Aber jetzt habe ich diese Fehlermeldung:
java.lang.IllegalArgumentException: Parameter value element [100] did not match expected type [br.com.entities.TipoEmpresa (n/a)]
Irgendwelche Gedanken darüber?
Hallo Alter, danke für die Hilfe, aber jetzt bekomme ich eine andere Fehlermeldung, ich habe meine Frage damit bearbeitet, haben Sie irgendwelche Ideen aboute es? – user3628479