Duvida no Annotation (OneToOne) [RESOLVIDO]

9 respostas
Jarf

Olá amigos, estou estudando Annotation e no tutorial tem o seguinte exemplo:

@Entity public class Customer implements Serializable { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="passport_fk") public Passport getPassport() { ... } @Entity public class Passport implements Serializable { @OneToOne(mappedBy = "passport") public Customer getOwner() { ... }

Alguem poderia me ajudar a entender esse exemplo? Eu não estou conseguindo entender esses gets…
Por que public Passport getPassport() em Customer e public Customer getOwner() em Passport?
Sei que isso deve ser algo ridiculo, mas eu estou viajando nisso…

Agradeceria se alguem pudesse me ajudar e se possivel indicar um tutorial de Annotation em portugues se tiver.

Obrigado!!

[]'s

9 Respostas

mduques

No relacionamento OO de 1 pra 1 como é o caso, é feito atraves de objetos. Nesta caso o Passaport pertence a um Customer que por sua vez tem um Passaport. Então modelando isso o Objeto Passaport tem um objeto Customer que tem um Passaport…
E com Annotation vc pode redifir isso no metodo get ou no proprio atributo como no exemplo abaixo… sacou ±?

@Entity   
public class Customer implements Serializable {

@OneToOne(cascade = CascadeType.ALL)   
@JoinColumn(name="passport_fk")   
private Passport passport;

public Passport getPassport() {   
return passport;
}
Jarf

Acho que não entendi mto bem nao..
Tipo, eu tenho duas tabelas q tem ligação 1 para 1.. Tabelas cubo e fato.
eu fiz da seguinte forma:

Cubo.java
@Entity
@SequenceGenerator(name="SEQ",sequenceName="hibernate_sequence", allocationSize = 1)
public class Cubo implements Serializable {
	
	@Id 
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")
	private Long idcubo;
	
	@Column (nullable = true, length = 50)
	private String nome;
	
	@Column (nullable = true, length = 60)
	private String servidor;
	
	@Column (name = "conexao_url", nullable = true, length = 200)
	private String conexaoUrl;
	
	@Column (name = "conexao_usuario", nullable = true, length = 50)
	private String conexaoUsuario;
	
	@Column (name = "conexao_senha", nullable = true, length = 50)
	private String conexaoSenha;
	
	@Column (name ="conexao_driver", nullable = true, length = 50)
	private String conexaoDriver;
	
	@Column (name = "tempo_refresh")
	private int tempoRefresh;
	
	@OneToOne (mappedBy = "fato")
	public Long getIdcubo() {
		return idcubo;
	}
	public void setIdcubo(Long idcubo) {
		this.idcubo = idcubo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getServidor() {
		return servidor;
	}
	public void setServidor(String servidor) {
		this.servidor = servidor;
	}
	public String getConexaoUrl() {
		return conexaoUrl;
	}
	public void setConexaoUrl(String conexaoUrl) {
		this.conexaoUrl = conexaoUrl;
	}
	public String getConexaoUsuario() {
		return conexaoUsuario;
	}
	public void setConexaoUsuario(String conexaoUsuario) {
		this.conexaoUsuario = conexaoUsuario;
	}
	public String getConexaoSenha() {
		return conexaoSenha;
	}
	public void setConexaoSenha(String conexaoSenha) {
		this.conexaoSenha = conexaoSenha;
	}
	public String getConexaoDriver() {
		return conexaoDriver;
	}
	public void setConexaoDriver(String conexaoDriver) {
		this.conexaoDriver = conexaoDriver;
	}
	public int getTempoRefresh() {
		return tempoRefresh;
	}
	public void setTempoRefresh(int tempoRefresh) {
		this.tempoRefresh = tempoRefresh;
	}
	
	

}
Fato.java
@Entity
public class Fato implements Serializable {
	
	@Id @GeneratedValue
	private Long idfato;
	
	private Long idcubo;
	
	
	public Long getIdfato() {
		return idfato;
	}
	public void setIdfato(Long idfato) {
		this.idfato = idfato;
	}
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name="idcubo")
	public Long getIdcubo() {
		return idcubo;
	}
	public void setIdCubo(Long idcubo) {
		this.idcubo = idcubo;
	}
	
	

}

Está certo isso?

mduques

ai é que tá vc noa relaciona explicitamente com os ids e sim com os objetos (Cubo e Fato)…

Entity   
public class Fato implements Serializable {   
       
    private Cubo cubo;   
}

public class Cubo implements Serializable {   
       
    private Fato fato;   
}

daí vc usa os annotations anteriores para informar o relacionamento… sacou?

Jarf

Acho que agora eu entendi cara… vou fazer aqui e te passo pra vc da uma olhada pra mim, por favor ;D

pode ser? xD

Jarf

Da uma olhadinha pra mim aí agora por favor, amigo.

cubo.java
@Entity
@SequenceGenerator(name="SEQ",sequenceName="hibernate_sequence", allocationSize = 1)
public class Cubo implements Serializable {
	
	@Id 
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")
	private Long idcubo;
	
	private Fato fato;
	
	@Column (nullable = true, length = 50)
	private String nome;
	
	@Column (nullable = true, length = 60)
	private String servidor;
	
	@Column (name = "conexao_url", nullable = true, length = 200)
	private String conexaoUrl;
	
	@Column (name = "conexao_usuario", nullable = true, length = 50)
	private String conexaoUsuario;
	
	@Column (name = "conexao_senha", nullable = true, length = 50)
	private String conexaoSenha;
	
	@Column (name ="conexao_driver", nullable = true, length = 50)
	private String conexaoDriver;
	
	@Column (name = "tempo_refresh")
	private int tempoRefresh;
	
	public Long getIdcubo() {
		return idcubo;
	}
	public void setIdcubo(Long idcubo) {
		this.idcubo = idcubo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getServidor() {
		return servidor;
	}
	public void setServidor(String servidor) {
		this.servidor = servidor;
	}
	public String getConexaoUrl() {
		return conexaoUrl;
	}
	public void setConexaoUrl(String conexaoUrl) {
		this.conexaoUrl = conexaoUrl;
	}
	public String getConexaoUsuario() {
		return conexaoUsuario;
	}
	public void setConexaoUsuario(String conexaoUsuario) {
		this.conexaoUsuario = conexaoUsuario;
	}
	public String getConexaoSenha() {
		return conexaoSenha;
	}
	public void setConexaoSenha(String conexaoSenha) {
		this.conexaoSenha = conexaoSenha;
	}
	public String getConexaoDriver() {
		return conexaoDriver;
	}
	public void setConexaoDriver(String conexaoDriver) {
		this.conexaoDriver = conexaoDriver;
	}
	public int getTempoRefresh() {
		return tempoRefresh;
	}
	public void setTempoRefresh(int tempoRefresh) {
		this.tempoRefresh = tempoRefresh;
	}
	
	@OneToOne (mappedBy = "fato")
	public Fato getFato() {
		return fato;
	}
	public void setFato(Fato fato) {
		this.fato = fato;
	}
	
	

}
Fato.java
@Entity
public class Fato implements Serializable {
	
	@Id @GeneratedValue
	private Long idfato;
	
	private Long idcubo;
	
	private Cubo cubo;
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name="idcubo")
	public Cubo getCubo() {
		return cubo;
	}
	public void setCubo(Cubo cubo) {
		this.cubo = cubo;
	}
	public Long getIdfato() {
		return idfato;
	}
	public void setIdfato(Long idfato) {
		this.idfato = idfato;
	}
	
	public Long getIdcubo() {
		return idcubo;
	}
	public void setIdcubo(Long idcubo) {
		this.idcubo = idcubo;
	}
	
	

}

Está certo agora ou tem algo errado? :roll:

Vlw!!

abraço!

mduques

± isso…

@Entity   
public class Fato implements Serializable {   
       
    @Id 
    @GeneratedValue   
    private Long idfato;   
    @OneToOne(cascade = CascadeType.ALL)   
    @JoinColumn(name="idcubo")   
    private Cubo cubo;   
       
    public Cubo getCubo() {   
        return cubo;   
    }   
    public void setCubo(Cubo cubo) {   
        this.cubo = cubo;   
    }   
    public Long getIdfato() {   
        return idfato;   
    }   
    public void setIdfato(Long idfato) {   
        this.idfato = idfato;   
    }   
}
@Entity   
@SequenceGenerator(name="SEQ",sequenceName="hibernate_sequence", allocationSize = 1)   
public class Cubo implements Serializable {   
       
    @Id   
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")   
    private Long idcubo;   

    @OneToOne (mappedBy = "cubo")        
    private Fato fato;   
       
    @Column (nullable = true, length = 50)   
    private String nome;   
       
    @Column (nullable = true, length = 60)   
    private String servidor;   
       
    @Column (name = "conexao_url", nullable = true, length = 200)   
    private String conexaoUrl;   
       
    @Column (name = "conexao_usuario", nullable = true, length = 50)   
    private String conexaoUsuario;   
       
    @Column (name = "conexao_senha", nullable = true, length = 50)   
    private String conexaoSenha;   
       
    @Column (name ="conexao_driver", nullable = true, length = 50)   
    private String conexaoDriver;   
       
    @Column (name = "tempo_refresh")   
    private int tempoRefresh;   
       
    public Long getIdcubo() {   
        return idcubo;   
    }   
    public void setIdcubo(Long idcubo) {   
        this.idcubo = idcubo;   
    }   
    public String getNome() {   
        return nome;   
    }   
    public void setNome(String nome) {   
        this.nome = nome;   
    }   
    public String getServidor() {   
        return servidor;   
    }   
    public void setServidor(String servidor) {   
        this.servidor = servidor;   
    }   
    public String getConexaoUrl() {   
        return conexaoUrl;   
    }   
    public void setConexaoUrl(String conexaoUrl) {   
        this.conexaoUrl = conexaoUrl;   
    }   
    public String getConexaoUsuario() {   
        return conexaoUsuario;   
    }   
    public void setConexaoUsuario(String conexaoUsuario) {   
        this.conexaoUsuario = conexaoUsuario;   
    }   
    public String getConexaoSenha() {   
        return conexaoSenha;   
    }   
    public void setConexaoSenha(String conexaoSenha) {   
        this.conexaoSenha = conexaoSenha;   
    }   
    public String getConexaoDriver() {   
        return conexaoDriver;   
    }   
    public void setConexaoDriver(String conexaoDriver) {   
        this.conexaoDriver = conexaoDriver;   
    }   
    public int getTempoRefresh() {   
        return tempoRefresh;   
    }   
    public void setTempoRefresh(int tempoRefresh) {   
        this.tempoRefresh = tempoRefresh;   
    }   
       
    public Fato getFato() {   
        return fato;   
    }   
    public void setFato(Fato fato) {   
        this.fato = fato;   
    }   
       
       
  
}
Jarf

ahh ta… agora entendi… vc colocou na declaração.

Mas no exemplo não coloca no get? :roll:

Exemplo do tutorial

@Entity public class Customer implements Serializable { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="passport_fk") public Passport getPassport() { ... } @Entity public class Passport implements Serializable { @OneToOne(mappedBy = "passport") public Customer getOwner() { ... }

mduques

dá no mesmo

se ligue nisso…



@OneToOne (mappedBy = cubo)

private Fato fato;


Jarf

Ahh blz cara…
Agora eu axo que sakei :wink:
Meu horario está acabando aki no estágio, daeh vou aproveitar pra mapear as outras 1 para 1 e amanha estudo o 1 para Varios.

Obrigado pela ajuda amigo!!!

Criado 28 de outubro de 2008
Ultima resposta 28 de out. de 2008
Respostas 9
Participantes 2