Boa noite Pessoal!
quando eu faço isso:
AgenteEconomico agente = em.find(AgenteEconomico.class, 104);
o EclipseLink e mesmo o Hibernate (já testei com os dois) ignoram meus LAZY.
eles trazem todos os outros objetos relacionados
carrega tudo
eu criei dois relacionamentos simples conforme apostila da K19, e funciona perfeitamente
não aguento mais analisar e estudar os relacionamentos
por favor, olhem meu código
public class AgenteEconomico implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="gen_agente_economico_id")
@SequenceGenerator(name="gen_agente_economico_id",sequenceName="seq_agente_economico_id", initialValue=1, allocationSize=1)
@Column(name = "id")
private Integer id;
@Column(name = "tipo")
private String tipo;
@JoinColumn(name = "pessoa_id")
@OneToOne(cascade = CascadeType.ALL,fetch=FetchType.LAZY)
private Pessoa pessoa;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "agenteEconomico",fetch=FetchType.LAZY)
private Collection<Imovel> imovelCollection;
public class Pessoa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="gen_pessoa_id")
@SequenceGenerator(name= "gen_pessoa_id", sequenceName="seq_pessoa_id", initialValue=1, allocationSize=1)
@Column(name = "id")
private Integer id;
@Column(name = "nome")
private String nome;
@Column(name = "sobre_nome")
private String sobreNome;
@Column(name = "idade")
private Integer idade;
@OneToOne(mappedBy="pessoa", fetch=FetchType.LAZY)
@JoinColumn(name = "agente_economico_id", referencedColumnName = "id")
private AgenteEconomico agenteEconomico;
@JoinColumn (name="certidao_nascimento_id")
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
private CertidaoNascimento certidaoNascimento;
@Column(name = "sexo")
private String sexo;
public class CertidaoNascimento implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="gen_certidao_nascimento_id")
@SequenceGenerator(name="gen_certidao_nascimento_id", sequenceName="seq_certidao_nascimento_id", initialValue=1, allocationSize=1)
private int id;
@Column(name = "numero")
private String numero;
@Column(name = "digito_verificador")
private String digitoVerificador;
@Column(name = "data_emissao")
@Temporal(TemporalType.DATE)
private Date dataEmissao;
@Column(name = "cidade_nascimento")
private String cidadeNascimento;
@Column(name = "data_nascimento")
@Temporal(TemporalType.DATE)
private Date dataNascimento;
@Column(name = "nome_mae")
private String nomeMae;
@Column(name = "nome_pai")
private String nomePai;
@JoinColumn(name = "pessoa_id", referencedColumnName = "id")
@OneToOne(mappedBy="certidaoNascimento", fetch=FetchType.LAZY)//por padrão adota o EAGER, não aceita o LAZY
private Pessoa pessoa;
public class Imovel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="gen_imovel_id")
@SequenceGenerator(name="gen_imovel_id", sequenceName="seq_imovel_id", initialValue=1, allocationSize=1)
@Column(name = "id")
private Integer id;
@Column (name="nome_imovel")
private String nomeImovel;
@JoinColumn(name = "agente_economico_id", referencedColumnName = "id")
@ManyToOne(fetch=FetchType.LAZY)
private AgenteEconomico agenteEconomico;
@JoinColumn(name = "endereco_id")
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
private Endereco endereco;
public class Endereco implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="gen_endereco_id")
@SequenceGenerator(name="gen_endereco_id", sequenceName="seq_endereco_id", initialValue=1, allocationSize=1)
@Column(name = "id")
private Integer id;
@Column(name = "logradouro")
private String logradouro;
@Column(name = "numero")
private String numero;
@Column(name = "complemento")
private String complemento;
@Column(name = "bairro")
private String bairro;
@Column(name = "caixa_postal")
private String caixaPostal;
@JoinColumn(name = "imovel_id", referencedColumnName = "id")
@OneToOne(mappedBy = "endereco", fetch=FetchType.LAZY)
private Imovel imovel;
o resultado pelo EclipseLink
SELECT id, tipo, pessoa_id FROM agente_economico WHERE (id = ?)
SELECT id, idade, sobre_nome, sexo, nome, certidao_nascimento_id FROM pessoa WHERE (id = ?)
SELECT ID, nome_mae, data_emissao, cidade_nascimento, digito_verificador, data_nascimento, nome_pai, numero FROM certidao_nascimento WHERE (ID = ?)
SELECT id, idade, sobre_nome, sexo, nome, certidao_nascimento_id FROM pessoa WHERE (certidao_nascimento_id = ?)
SELECT id, tipo, pessoa_id FROM agente_economico WHERE (pessoa_id = ?)
desde já agradeço