Dificuldade com persistencia de dados

Olá pessoal,

Meu problema atual é o seguinte:

Estou usando a persistencia de dados para criar algumas tabelas no meu aplicativo. até ai tudo bem. O problema é que tenho algumas tabelas relacionadas entre si e preciso criar um JoinColumn no aplicativo para poder criar os relacionamentos na classe ok. criei o Join mas não funfou…

o meu código está assim:

[code]
@Entity
@Table(name = “membros”, catalog = “glinksysdb”, schema = “”)
@NamedQueries({
@NamedQuery(name = “Membros.findAll”, query = “SELECT m FROM Membros m”),
@NamedQuery(name = “Membros.findByMemCod”, query = “SELECT m FROM Membros m WHERE m.memCod = :memCod”),
@NamedQuery(name = “Membros.findByGCod”, query = “SELECT m FROM Membros m WHERE m.gCod = :gCod”),
@NamedQuery(name = “Membros.findByBairroCod”, query = “SELECT m FROM Membros m WHERE m.bairroCod = :bairroCod”),
@NamedQuery(name = “Membros.findByCidCod”, query = “SELECT m FROM Membros m WHERE m.cidCod = :cidCod”),
@NamedQuery(name = “Membros.findByDizCod”, query = “SELECT m FROM Membros m WHERE m.dizCod = :dizCod”),
@NamedQuery(name = “Membros.findByInscCod”, query = “SELECT m FROM Membros m WHERE m.inscCod = :inscCod”),
@NamedQuery(name = “Membros.findByRuaCod”, query = “SELECT m FROM Membros m WHERE m.ruaCod = :ruaCod”),
@NamedQuery(name = “Membros.findByMemNome”, query = “SELECT m FROM Membros m WHERE m.memNome = :memNome”),
@NamedQuery(name = “Membros.findByMemDataCad”, query = “SELECT m FROM Membros m WHERE m.memDataCad = :memDataCad”),
@NamedQuery(name = “Membros.findByMemEmail”, query = “SELECT m FROM Membros m WHERE m.memEmail = :memEmail”),
@NamedQuery(name = “Membros.findByMemMsn”, query = “SELECT m FROM Membros m WHERE m.memMsn = :memMsn”),
@NamedQuery(name = “Membros.findByMemDataNiver”, query = “SELECT m FROM Membros m WHERE m.memDataNiver = :memDataNiver”),
@NamedQuery(name = “Membros.findByProfCod”, query = “SELECT m FROM Membros m WHERE m.profCod = :profCod”),
@NamedQuery(name = “Membros.findByMemDataBat”, query = “SELECT m FROM Membros m WHERE m.memDataBat = :memDataBat”),
@NamedQuery(name = “Membros.findByCivilCod”, query = “SELECT m FROM Membros m WHERE m.civilCod = :civilCod”),
@NamedQuery(name = “Membros.findByMemComplemento”, query = “SELECT m FROM Membros m WHERE m.memComplemento = :memComplemento”),
@NamedQuery(name = “Membros.findByMemCelular”, query = “SELECT m FROM Membros m WHERE m.memCelular = :memCelular”),
@NamedQuery(name = “Membros.findByMemTelfixo”, query = “SELECT m FROM Membros m WHERE m.memTelfixo = :memTelfixo”),
@NamedQuery(name = “Membros.findByMemTelrec”, query = “SELECT m FROM Membros m WHERE m.memTelrec = :memTelrec”)})
public class Membros implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = “MEM_COD”)
private Integer memCod;

@JoinColumn(name = "G_COD", referencedColumnName= "G_COD")
@ManyToOne
private Membros gCod;

[/code]…

quando faço isso eu vou na minha tabela e o caminho da coluna, onde tinha ${Gcod} eu coloquei ${Gcod.gNome}

o erro que é gerado é esse aqui:

Exception in thread “AWT-EventQueue-0” java.lang.StackOverflowError
at oracle.toplink.essentials.internal.helper.DatabaseField.equals(DatabaseField.java:159)
at oracle.toplink.essentials.internal.helper.DatabaseField.equals(DatabaseField.java:182)
at java.util.HashMap.get(HashMap.java:305)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:425)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)
at oracle.toplink.essentials.mappings.OneToOneMapping.getFieldClassification(OneToOneMapping.java:433)

a coluna referenciada não seria Membros.gCod ???

Olá Thiago,

Para vc entender melhor vou explicar como funciona o relacionamento.

Tenho duas tabelas relacionadas entre si com autorelacionamento, feitoa através da ferramenta MysqlAdministrator (falo que é auto-relacionamento pq ela não tem nenhuma opção para dizer se é Many to One, One to Many …,

nesse a tabela mestre que é a tabela de membros tem um campo G_COD, esse campo está implicito na linha 34, onde tem name = “G_COD”, dai tem um relacionamento com outra tabela chamada G12 que tb tem um campo G_COD. Como já existe um indice na tabela de membros que referencia a tabela G12, criei uma referencia direto no aplicativo apontando para o G_COD.

De qualquer forma fiz o que vc me orientou, o erro para de acontecer mas como ele esta buscando uma referencia dentro da própria tabela (pelo que entendi), ele não me retorna o código da outra tabela que está relacionada. tentei fazer tambem colocando g12.G_COD e tb não funcionou…