ychv
Setembro 27, 2012, 12:39pm
#1
Ola gente,
queria saber se alguem ja tevo uma mensagem de erro dessas e se caso sim, por favor poderia redigir em poucas palavras o por que do erro???
Obrigado,
[TopLink Warning]: 2012.09.27 02:50:46.200--UnitOfWork(18718469)--Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERROR: column "cd_endereco" of relation "estabelecimento" does not existError Code: 0
Call:INSERT INTO labgeo.estabelecimento (cd_estabelecimento, cnpj, site, nome, cd_pessoa, cd_endereco) VALUES (?, ?, ?, ?, ?, ?)
bind => [1, null, null, null, 18, null]
Hmm… o mistério da stacktrace…
Se você ler o erro vai ver que ele diz que não existe uma coluna cd_endereco em estabelecimento
Você leu a mensagem de erro? Oq você não entendeu dela?
ychv
Setembro 27, 2012, 12:49pm
#4
Gente,
o que estou entendo é que no momento que estou tentando da um insert na tabela que estou querendo gravar, a coluna nao exista nessa tabela. Bom, de fato nao existe mesmo, ela faz parte de uma outra tabela filha que tem relação com a tabela que estou querendo persistir os dados. Mas nao sei como resolver a persistencia…estou usando JSF, toplink.
Obrigado
[quote=ychv]
Gente,
o que estou entendo é que no momento que estou tentando da um insert na tabela que estou querendo gravar, a coluna nao exista nessa tabela. Bom, de fato nao existe mesmo, ela faz parte de uma outra tabela filha que tem relação com a tabela que estou querendo persistir os dados. Mas nao sei como resolver a persistencia…estou usando JSF, toplink.
Obrigado[/quote]No seu mapeamento do toplink você informou que essa coluna se encontra em outra tabela?
ychv
Setembro 27, 2012, 1:01pm
#6
Assim está
Tabela EstabelecimentoEndereco
@JoinColumn(name = "cd_estabelecimento", referencedColumnName = "cd_estabelecimento")
@ManyToOne
private LEstabelecimento cdEstabelecimento;
Tabela Estabelecimento
@JoinColumn(name = "cd_endereco", referencedColumnName = "cd_endereco")
@ManyToOne
private LEstabelecimentoEndereco cdEndereco;
Estabelecimento
cdEstabelecimento
EstabelecimentoEndereco
cdEstabelecimento
cdEndereco
Obrigado,
E onde você mapeou que a informação pertence a uma tabela filha? Onde está essa informação na classe?
ychv
Setembro 27, 2012, 1:11pm
#8
Bom, nos beans eu apenas criei set, get e refatorei as chaves primarias de tabela mae para a tabela filha.
Estabelecimento
@Entity
@Table(name = "labgeo.estabelecimento")
public class LEstabelecimento implements Serializable {
@Id
@Column(name = "cd_estabelecimento", nullable = false)
private Integer cdEstabelecimento;
@Column(name = "nome")
private String nome;
@Column(name = "cnpj")
private String cnpj;
@Column(name = "site")
private String site;
@JoinColumn(name = "cd_pessoa", referencedColumnName = "cd_pessoa")
@ManyToOne
private LPessoa cdPessoa;
@JoinColumn(name = "cd_endereco", referencedColumnName = "cd_endereco")
@ManyToOne
private LEstabelecimentoEndereco cdEndereco;
EstabelecimentoEndereco
@Entity
@Table(name = "labgeo.estabelecimento_endereco")
public class LEstabelecimentoEndereco implements Serializable {
@Id
@Column(name = "cd_endereco", nullable = false)
private Integer cdEndereco;
@Column(name = "endereco")
private String endereco;
@Column(name = "complemento_endereco")
private String complementoEndereco;
@Column(name = "numero")
private String numero;
@Column(name = "zona")
private Character zona;
@Column(name = "cep")
private String cep;
@Column(name = "bairro")
private String bairro;
@Column(name = "unid_consumidora")
private String unidConsumidora;
@Column(name = "cd_uf")
private Integer cdUf;
@Column(name = "fone")
private String fone;
@JoinColumn(name = "cd_estabelecimento", referencedColumnName = "cd_estabelecimento")
@ManyToOne
private LEstabelecimento cdEstabelecimento;
Oq é tabela filha para você? Filho é quando uma herda da outra.
Quando um relacionamento é ManyToOne dos lados? Nunca vi isso.
ychv
Setembro 27, 2012, 1:31pm
#10
Bom,
posso ta errando nesse ponto, pois adicionei as chaves primarias como mostrado. eu vou rever isso e corrir, e ve se ta certo. mas, vc poderia postar um exemplo de persistencia de objeto (entre duas tabelas relcionadas), para poder me basear e, certamente, aprender?
Obrigado,
ychv
Setembro 27, 2012, 9:22pm
#11
Estava errado mesmo o mapeamento no topLink, dai refiz e deu certo. Ficou assim agora:
Tabela Estabelecimento
@OneToMany(cascade = CascadeType.ALL, mappedBy = "cdEstabelecimento")
private Collection<LEstabelecimentoEndereco> lEstabelecimentoEnderecoCollection;
Tabela EstabelecimentoEndereco
@JoinColumn(name = "cd_estabelecimento", referencedColumnName = "cd_estabelecimento")
@ManyToOne
private LEstabelecimento cdEstabelecimento;