Galera GUJ, tenho a seguinte situação:
@Entity
public class Veiculo{
@Id
private Integer id;
@Embedded
private CaracteristicasDoVeiculo caracteristicasDoVeiculo;
//GET's e SET's
}
@Embeddable
public class CaracteristicasDoVeiculo{
//alguns atributos
@OneToMany(...)
@Cascade(...)
private List<EquipamentoDoVeiculo> equipamentos = new ArrayList<EquipamentoDoVeiculo>();
}
@Entity
public class EquipamentoDoVeiculo {
@Id
private Integer id;
@ManyToOne(...)
@JoinColumn(...)
@Cascade(...)
private Equipamento equipamento;
//Alguns atributos
// GET's e SET's
}
@Entity
public class Equipamento{
@Id
private Integer id;
//Atributos
//GET's e SET's
}
O problema é o seguinte, tenho que fazer um relatorio de Veiculos onde o usuario pode entrar com uma lista de equipamentos como filtro.
Estou montando a minha HQL da seguinte maneira:
HQL
select v from Veiculo v where v.caracteristicasDoVeiculo.equipamentos in (:equipamentos)
Abaixo o codigo que estou chamando para executar o mesmo:
List<EquipamentoDoVeiculo> list = new ArrayList<EquipamentoDoVeiculo>();
for(Equipamento equipamento: filtro.getEquipamentos()){
list.add(new EquipamentoDoVeiculo(equipamento, null));
}
consulta.setParameterList("equipamentos", list);
Ai quando rodo a minha aplicação esta acorrendo o seguinte erro:
Caused by: java.sql.SQLException: Parâmetro IN ou OUT ausente do índice:: 1
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1737)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3430)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)
Alguém já passou por essa situação?