私はここの場合ですが、私のJPQLにコマンドー「IN」を使用して上のいくつかのproblensを抱えている: 私は、これらのクラスを持っている:JPQLで「IN」コマンドを正しく使うには?
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;
}
それから私は「TipoEmpresa」のリストを送信し、このサービスを、持っています
SERVICE
public List<Empresa> getEmpresasByTipoEmpresaAndTipoStatus(List<TipoEmpresa>tiposEmpresa) {
List<Empresa> listaDeEmpresas=empresaRepository.getEmpresasByTipoEmpresa(tiposEmpresa);
return listaDeEmpresas;
}
リポジトリ
@Query(name = "SELECT E FROM Empresa E WHERE E.tipoEmpresa IN(:tipoEmpresa)")
List<Empresa> getEmpresasByTipoEmpresaAndTipoStatus(@Param("tipoEmpresa") List<TipoEmpresa> tipoEmpresa);
:私のEmpresaRepositoryのクエリへ
あなたは私のリストに記載されている「tipoEmpresa」を持っているすべての「Empresaメール」を取得しようとしている見ることができますが、サービスは、私はこのエラーを取得するときcolling通り:
java.sql.SQLException: Operand should contain 1 column(s)
を私は知りません何をもうやるべきか、私が思うことができるすべてを試した、何が間違っている?
こんにちは!まず最初に、助けてくれてありがとう!
。 。 。
私はこのようになった私のコードを、変更、g.Iraniの提案を試してみました:
リポジトリ
@Query(name = "SELECT E FROM Empresa E WHERE E.tipoEmpresa.id IN :tipoEmpresa ")
List<Empresa> getEmpresasByTipoEmpresaAndTipoStatus(@Param("tipoEmpresa") List<Long> tipoEmpresa);
サービス
//just a test...
List<Long> test =Arrays.asList(100l, 200l);
List<Empresa> listaDeEmpresas=empresaRepository.getEmpresasByTipoEmpresa(test);
しかし、今、私はこのエラーメッセージました:
をjava.lang.IllegalArgumentException: Parameter value element [100] did not match expected type [br.com.entities.TipoEmpresa (n/a)]
それについて何か考えていますか?
こんにちは、助けてくれてありがとうございましたが、今は別のエラーメッセージが表示されています。私はそれで私の質問を編集しました。 – user3628479