Estou tentando buscar uma conta bancária a partir de uma chave pix em um banco de dados MySQL utilizando Hibernate porém não estou conseguindo construir o método que faz esse filtro, podem me ajudar?
Os atributos da classe Conta:
@Entity
@Table(name="contas")
@Inheritance(strategy =InheritanceType.SINGLE_TABLE)
public abstract class Conta {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private static long somaContas = 0L;
@Id
private Long numeroDaConta;
private String agencia = "0001";
@Enumerated(EnumType.STRING)
private EnumConta tipoDeConta;
@ManyToOne
private Cliente cliente;
public BigDecimal saldo = new BigDecimal("0");
private String senha;
private ArrayList<String> chavesPix = new ArrayList<>(); <------------------------------------------------------- ArrayList contendo as chaves pix.
@OneToOne(mappedBy = "contaMae", cascade =CascadeType.ALL)
protected ExtratoBancario extrato = new ExtratoBancario(this);
O método que construi para buscar a Conta a partir da Chave Pix (fica na ContaDAO):
public Conta getByChavePix(String chave) {
String jpql = "SELECT c FROM Conta c WHERE c.chavesPix IN :chave";
return em.createQuery(jpql,Conta.class).setParameter("chave",chave).getSingleResult();
}
Exception que estou recebendo:
Exception in thread "main" java.lang.IllegalArgumentException: Parameter value [chavepixteste] did not match expected type [java.util.ArrayList (n/a)]