Mapeamento - não carrega objeto [Resolvido]

4 respostas
E

Tenho o mapeamento abaixo, mas o objeto produto nao esta carregando…

-----------------------------------------------------------
@Embeddable
class ProdutoPK{
@Column(name = "id_produto")
Long idProduto
@Column(name= "versao")
Long versao
}
-----------------------------------------------------------
class Produto{
@EmbeddedId
ProdutoPk pk
}
-----------------------------------------------------------
class Projeto{
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumn(name = "id_produto", referencedColumnName = "id_produto", nullable = false, insertable = true, updatable = false),
@JoinColumn(name = "versao", referencedColumnName = "versao", nullable = false, insertable = true, updatable = false) })
private Produto produto;
}
-----------------------------------------------------------

4 Respostas

Hebert_Coelho

Tira o lazy, fetch = FetchType.LAZY.

E

Funcionou.

Só não entendi o por que. O objeto nao deveria ser carregado qdo eu dar um projeto.getProduto() ??

fbl.lucas
Hebert_Coelho

fbl.lucas:
everjava:

Funcionou.

Só não entendi o por que. O objeto nao deveria ser carregado qdo eu dar um projeto.getProduto() ??


Há um tempo atrás descobri que o OneToOne não suporta lazy, mas até onde lembro quando era colocado esta informação ela apenas era ignorada.
Mas se funcionou beleza, altera o titulo para “[Resolvido]”

Funciona sim. Por padrão todo relacionamento terminado em One tem por padrão o EAGER. Caso coloque LAZY ele não será carregado (pelo menos para JPA).

Com LAZY o relacionamento só será carregado ao utilizar o get se estiver dentro de uma transação, caso não esteja, ele vai levantar exception ao tentar acessar o objeto.

Criado 26 de dezembro de 2011
Ultima resposta 26 de dez. de 2011
Respostas 4
Participantes 3