Olá Pessoal!
Estou fazendo um teste para um trabalho da faculdade onde consiste em chamar uma função armazenada no banco, pela JPA, o problema esta no resultado retornado, por exemplo: se tiver 1 cliente com 4 pedidos ele cria 4 objetos do cliente que já possui uma referência para pedido…segue o código abaixo:
Cliente.java
@Entity
@Table(name = "cliente2")
@SqlResultSetMapping(
name="StoredFunction",
entities={
@EntityResult(entityClass=Cliente.class),
@EntityResult(entityClass=Pedido.class)
}
)
public class Cliente implements Serializable {
@Id
@Column(name = "codigo_cliente", nullable=false)
private Integer codigoCliente;
@Column(name = "nome_cliente")
private String nomeCliente;
@OneToMany(mappedBy = "codigoCliente")
private List<Pedido> pedidos;
...
Pedido.java
@Entity
public class Pedido implements Serializable {
@Id
@Column(name = "num_pedido", nullable=false)
private Integer numPedido;
@JoinColumn(name = "codigo_cliente")
@ManyToOne
private Cliente codigoCliente;
...
Main.java
EntityManagerFactory emf = Persistence.createEntityManagerFactory("TrabalhoDBPU");
EntityManager em = emf.createEntityManager();
String sql = "SELECT * FROM f_buscaClientePedido(?) as (codigo_cliente numeric, nome_cliente varchar, num_pedido numeric)";
Query query = em.createNativeQuery(sql, "StoredFunction");
query.setParameter(1, 720);
List result = query.getResultList();
Então queria saber se realmente deve retornar a quantidade de registros em objetos clientes ou somente 1 cliente com seus vários pedidos.
Desde já obrigado pela atenção