Galera boa tarde estou com uma duvida aqui. E gostaria de saber se está mais ou menos em um caminho certo minhas classes de modelagem.
@Entity
@Table(name = "item")
public class Item implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "codigo")
private Long codigo;
@Column(name = "quantidade")
private Integer quantidade;
@Column(name = "valorTotal")
private BigDecimal valorTotal;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "produto_codigo", referencedColumnName = "codigo")
private Produto produto;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "acessorio_codigo", referencedColumnName = "codigo")
private Acessorio acessorio;
Aqui seria minha classe carrinho está certo? E depois tenho a minha classe de Venda
@Entity
@Table(name = "venda")
public class Venda implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "codigo")
private Long codigo;
@Temporal(TemporalType.DATE)
private Calendar data = Calendar.getInstance();
@OneToMany(fetch =FetchType.LAZY)
@JoinColumn(name = "produto_codigo", referencedColumnName = "codigo")
private List<Produto> produto = new ArrayList<Produto>();
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(referencedColumnName = "codigo", name = "cliente_codigo")
private Cliente cliente = new Cliente();
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(referencedColumnName = "codigo", name = "acessorio_codigo")
private List<Acessorio> acessorios = new ArrayList<Acessorio>();
Esta certo mais ou menos assim? Mais a minha duvida é outra, tenho o meu atributo do tipo List e depois em seguida tenho a anotação @OneToMany(fetch =FetchType.LAZY)
@OneToMany(fetch =FetchType.LAZY)
@JoinColumn(name = "produto_codigo", referencedColumnName = "codigo")
private List<Produto> produto = new ArrayList<Produto>();
Aqui vem minha duvida, na anotação OneToMany tenho um comportamento "PREGUIÇOSO" com o meu fetch =FetchType.LAZY correto? Eu tava colocando o comportamento com o FetchType.EAGER mas ele me da um erro, porque esse erro? Atributo do tipo Lista não aceita o comportamento fetch =FetchType.LAZY?