Boa Tarde pessoal, estou com umas dúvidas referente ao relacionamento de tabelas no Hibernate, minha dúvida é o seguinte. Estou fazendo um sisteminha bem simples Bancário.
Possuo um Banco e uma Agencia, onde um Banco pode ter várias Agencias e uma Agencia apenas um Banco, assim como que ficaria as classes?
Eu fiz assim mas não sei se tá certo.
[code]import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = “dbo.Banco”)
public class Banco {
@Id
private int numeroBanco;
private String nomeBanco;
public Banco(int numeroBanco, String nomeBanco) {
this.numeroBanco = numeroBanco;
this.nomeBanco = nomeBanco;
}
public int getNumeroBanco() {
return numeroBanco;
}
public void setNumeroBanco(int numeroBanco) {
this.numeroBanco = numeroBanco;
}
public String getNomeBanco() {
return nomeBanco;
}
public void setNomeBanco(String nomeBanco) {
this.nomeBanco = nomeBanco;
}
}
[/code]
[code]package Modelo;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity
@Table(name = “dbo.agencia”)
public class Agencia {
@Id
private int numeroAgencia;
private String cidade;
private String estado;
@OneToMany(mappedBy=“Banco”)
@Cascade(CascadeType.ALL)
private Banco banco;
public Agencia(){
}
public Agencia(int numeroAgencia, String cidade, String estado, Banco banco) {
this.numeroAgencia = numeroAgencia;
this.cidade = cidade;
this.estado = estado;
this.banco = banco;
}
public int getNumeroAgencia() {
return numeroAgencia;
}
public void setNumeroAgencia(int numeroAgencia) {
this.numeroAgencia = numeroAgencia;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public Banco getBanco() {
return banco;
}
public void setBanco(Banco banco) {
this.banco = banco;
}
}
[/code]
Como que ficaria o relacionamento.
Obrigado.
Assim ficaria mais correto:
@Entity
@Table(name = "dbo.Banco")
public class Banco {
@OneToMany(mappedBy="banco")
private List<Agencia> agencias;
//resto dos métodos e atributos
}
@Entity
@Table(name = "dbo.agencia")
public class Agencia {
@ManyToOne
@JoinColumn(name="id_banco")
private Banco banco;
//resto dos métodos e atributos
}
O possuidor do relacionamento deve ser a entidade que tem muitos…
Abraços…
Ao ececutar a classe Banco ele dá um erro.
[code]package Modelo;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = “dbo.Banco”)
public class Banco {
@Id
private int numeroBanco;
private String nomeBanco;
@OneToMany(mappedBy="dbo.banco")
private List<Agencia> agencias;
public List<Agencia> getAgencias() {
return agencias;
}
public void setAgencias(List<Agencia> agencias) {
this.agencias = agencias;
}
public String getNomeBanco() {
return nomeBanco;
}
public void setNomeBanco(String nomeBanco) {
this.nomeBanco = nomeBanco;
}
public Banco(int numeroBanco, String nomeBanco) {
this.numeroBanco = numeroBanco;
this.nomeBanco = nomeBanco;
}
public int getNumeroBanco() {
return numeroBanco;
}
public void setNumeroBanco(int numeroBanco) {
this.numeroBanco = numeroBanco;
}
}[/code]
[code]package Modelo;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = “dbo.agencia”)
public class Agencia {
@Id
private int numeroAgencia;
private String cidade;
private String estado;
@ManyToOne
@JoinColumn(name=“numeroBanco”)
private Banco banco;
public Agencia(){
}
public Agencia(int numeroAgencia, String cidade, String estado, Banco banco) {
this.numeroAgencia = numeroAgencia;
this.cidade = cidade;
this.estado = estado;
this.banco = banco;
}
public int getNumeroAgencia() {
return numeroAgencia;
}
public void setNumeroAgencia(int numeroAgencia) {
this.numeroAgencia = numeroAgencia;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public Banco getBanco() {
return banco;
}
public void setBanco(Banco banco) {
this.banco = banco;
}
}[/code]
[quote]Exception in thread “main” java.lang.ExceptionInInitializerError
at Visao.Main.main(Main.java:13)
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: Modelo.Banco.agencias[Modelo.Agencia][/quote]
Como está seu hibernate.cfg.xml ? Esta entidade está declarada lá ?? Pode ser esse o seu problema…
Eu uso o hibernate.properties, o acesso ao banco de dados está normal, só dá problema quando coloco esses relacionamentos, na classe banco mesmo eu adicionei vários sem problema no banco de dados antes de fazer o relacionamento.
hibernate.dialect org.hibernate.dialect.SQLServerDialect
hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
hibernate.connection.url jdbc:sqlserver://douglastc-note;databaseName=Java
hibernate.connection.username sa
hibernate.connection.password 3299
Poste aí suas classes… Onde você cria seu SessionFactory, onde você faz a persistência, a classe onde deu este erro…para ficar mais fácil do pessoal te ajudar…