Ajuda JPA

2 respostas
fabioebner

Pessoal tenho a seguinte entityt TbDocumento

@Entity
@Table(name = "tb_documento", schema="db_notas")
@SequenceGenerator(sequenceName="tb_documento_cd_documento_seq", allocationSize=1, initialValue=0, name = "tb_documento_cd_documento_seq")
@NamedQueries({@NamedQuery(name = "TbDocumento.findByCdDocumento", query = "SELECT t FROM TbDocumento t WHERE t.cdDocumento = :cdDocumento"), @NamedQuery(name = "TbDocumento.findByNmDocumento", query = "SELECT t FROM TbDocumento t WHERE t.nmDocumento = :nmDocumento"), @NamedQuery(name = "TbDocumento.findByNrLivro", query = "SELECT t FROM TbDocumento t WHERE t.nrLivro = :nrLivro"), @NamedQuery(name = "TbDocumento.findByNrFolha", query = "SELECT t FROM TbDocumento t WHERE t.nrFolha = :nrFolha"), @NamedQuery(name = "TbDocumento.findByVlVenal", query = "SELECT t FROM TbDocumento t WHERE t.vlVenal = :vlVenal"), @NamedQuery(name = "TbDocumento.findByVlNegocio", query = "SELECT t FROM TbDocumento t WHERE t.vlNegocio = :vlNegocio"), @NamedQuery(name = "TbDocumento.findByCdTabelaCusta", query = "SELECT t FROM TbDocumento t WHERE t.cdTabelaCusta = :cdTabelaCusta"), @NamedQuery(name = "TbDocumento.findByCdDivisor", query = "SELECT t FROM TbDocumento t WHERE t.cdDivisor = :cdDivisor"), @NamedQuery(name = "TbDocumento.findByDtPrevisaoDocumento", query = "SELECT t FROM TbDocumento t WHERE t.dtPrevisaoDocumento = :dtPrevisaoDocumento")})
public class TbDocumento implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY, generator="tb_documento_cd_documento_seq")
    @Column(name = "cd_documento", nullable = false)
    private Integer cdDocumento;
    @Column(name = "nm_documento", nullable = false)
    private String nmDocumento;
    @Column(name = "nr_livro")
    private String nrLivro;
    @Column(name = "nr_folha")
    private String nrFolha;
    @Column(name = "vl_venal", precision=12, scale=2)
    private BigDecimal vlVenal;
    @Column(name = "vl_negocio", precision=12, scale=2)
    private BigDecimal vlNegocio;
    @Column(name = "cd_tabela_custa")
    private Integer cdTabelaCusta;
    @Column(name = "cd_divisor")
    private Integer cdDivisor;
    @Column(name = "dt_previsao_documento")
    @Temporal(TemporalType.DATE)
    private Date dtPrevisaoDocumento;
    @OneToMany(mappedBy = "cdDocumento")
    private Collection<TbDocumentoAndamento> tbDocumentoAndamentoCollection;
    @OneToMany(mappedBy = "cdDocumento")
    private Collection<TbIndicadorDocumento> tbIndicadorDocumentoCollection;
    @OneToMany(mappedBy = "cdDocumento")
    private Collection<TbImovelDocumento> tbImovelDocumentoCollection;
    @OneToMany(mappedBy = "cdDocumento")
    private Collection<TbParte> tbParteCollection;
    @JoinColumn(name = "cd_funcionario", referencedColumnName = "cd_funcionario")
    @ManyToOne
    private TbFuncionario cdFuncionario;
    @JoinColumn(name = "cd_natureza", referencedColumnName = "cd_natureza")
    @ManyToOne
    private TbNatureza cdNatureza;
    @JoinColumn(name = "cd_protocolo", referencedColumnName = "cd_protocolo")
    @ManyToOne
    private TbProtocolo cdProtocolo;
    @JoinColumn(name = "cd_titulo", referencedColumnName = "cd_titulo")
    @ManyToOne
    private TbTitulo cdTitulo;
... gets and sets

note q faco referencia a varias outras tabelas outras tabelas
qdo eu recupero um documento da minha tabela… ele me retorna os dados de todas as outras tabelas… MENOS da TbImovelDocumento sendo q a minha TbImovelDocumento esta assim oh

@Entity
@Table(name = "tb_imovel_documento", schema="db_notas")
@SequenceGenerator(sequenceName="tb_imovel_documento_cd_imovel_seq", allocationSize=1, initialValue=0, name = "tb_imovel_documento_cd_imovel_seq")
public class TbImovelDocumento implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY, generator="tb_imovel_documento_cd_imovel_seq")
    @Column(name = "cd_imovel", nullable = false)
    private Integer cdImovel;
    @Column(name = "nr_matricula_imovel")
    private String nrMatriculaImovel;
    @Column(name = "ds_regiao_imovel", nullable = false)
    private String dsRegiaoImovel;
    @Column(name = "tp_imovel", nullable = false)
    private String tpImovel;
    @Column(name = "ds_tipo_imovel", nullable = false)
    private String dsTipoImovel;
    @Column(name = "cd_cep_imovel", nullable = false)
    private String cdCepImovel;
    @Column(name = "nr_lote_imovel")
    private String nrLoteImovel;
    @Column(name = "nr_quadra_imovel")
    private String nrQuadraImovel;
    @Column(name = "nr_numero_imovel")
    private String nrNumeroImovel;
    @Column(name = "nm_bairro_imovel")
    private String nmBairroImovel;
    @Column(name = "nm_endereco_imovel")
    private String nmEnderecoImovel;
    @Column(name = "nm_cidade_imovel")
    private String nmCidadeImovel;
    @Column(name = "sg_estado_imovel")
    private String sgEstadoImovel;
    @Column(name = "ds_complemento_imovel")
    private String dsComplementoImovel;
    @Column(name = "ds_indicador_fiscal_imovel")
    private String dsIndicadorFiscalImovel;
    @Column(name = "tp_alienacao_imovel")
    private String tpAlienacaoImovel;
    @Column(name = "nm_alienacao_imovel")
    private String nmAlienacaoImovel;
    @Column(name = "dt_alienacao_ivovel")
    @Temporal(TemporalType.DATE)
    private Date dtAlienacaoIvovel;
    @Column(name = "ds_tp_alienacao_imovel")
    private String dsTpAlienacaoImovel;
    @Column(name = "ds_circunscricao_imovel")
    private String dsCircunscricaoImovel;
    @Column(name = "vl_alienacao_aquisicao_imovel", precision=12, scale=2)
    private BigDecimal vlAlienacaoAquisicaoImovel;
    @Column(name = "nm_area_imovel")
    private String nmAreaImovel;
    @Column(name = "nr_area_imovel")
    private Double nrAreaImovel;
    @Column(name = "nr_registro_imovel")
    private String nrRegistroImovel;
    @Column(name = "tp_construcao_imovel")
    private String tpConstrucaoImovel;
    @Column(name = "nm_valor_consta_imovel")
    private String nmValorConstaImovel;
    @Column(name = "ds_itbi_consta_imovel")
    private String dsItbiConstaImovel;
    @Column(name = "ic_avaliacao_imovel")
    private Boolean icAvaliacaoImovel;
    @Column(name = "nm_orgao_emissor_avaliacao_imovel")
    private String nmOrgaoEmissorAvaliacaoImovel;
    @Column(name = "vl_avaliacao_imovel", precision=12, scale=2)
    private BigDecimal vlAvaliacaoImovel;
    @Column(name = "nr_gui_itbi_imovel")
    private String nrGuiItbiImovel;
    @Column(name = "nr_aliquota_imovel")
    private Double nrAliquotaImovel;
    @Column(name = "vl_itbi_imovel")
    private BigDecimal vlItbiImovel;
    @Column(name = "dt_vencimento_avaliacao_imovel", precision=12, scale=2)
    @Temporal(TemporalType.DATE)
    private Date dtVencimentoAvaliacaoImovel;
    @Column(name = "dt_recolimento_itbi_imovel")
    @Temporal(TemporalType.DATE)
    private Date dtRecolimentoItbiImovel;
    @Column(name = "vl_venal_imovel")
    private BigDecimal vlVenalImovel;
    @Column(name = "ds_observacao_imovel", precision=12, scale=2)
    @Lob
    private String dsObservacaoImovel;
    @JoinColumn(name = "cd_documento", referencedColumnName = "cd_documento")
    @ManyToOne
    private TbDocumento cdDocumento;
    @OneToMany(mappedBy = "cdImovel")
    private Collection<TbEnderecoImovel> tbEnderecoImovelCollection;

sendo q ele so NAO traz o TbImovelDocumento… o resto ele tras. e tem registro na tabela… com o codigo do documento certinho…

alguem sabe o pq??

valeu

2 Respostas

Laubstein_M_cio

@OneToMany(mappedBy = “cdDocumento”)
private Collection tbImovelDocumentoCollection;

mapeie como

@OneToMany
private Collection tbImovelDocumentoCollection;

e na entity TbImovelDocumento faça o mapped by para TbDocumento para termos o relacionamento bidirecional.

Rapapel

Laubstein:
@OneToMany(mappedBy = “cdDocumento”)
private Collection tbImovelDocumentoCollection;

mapeie como

@OneToMany
private Collection tbImovelDocumentoCollection;

e na entity TbImovelDocumento faça o mapped by para TbDocumento para termos o relacionamento bidirecional.

@ManyToOne não tem mappedBy.

Amigo, muito estranho mesmo, pq o mapeamento parece estar certo.

O referencedColumnName é opcional quando os campos das duas tabelas tem o mesmo nome.

@ManyToOne

@JoinColumn(name = cd_documento)

private TbDocumento cdDocumento;

Existe mesmo a cd_documento na tb_imovel_documento?
Ele não iria nem subir se não existisse.

vem null a lista de TbDocumento ou a lista vem vazia?

Criado 5 de novembro de 2008
Ultima resposta 5 de nov. de 2008
Respostas 2
Participantes 3