JPA - Mapear campo String como FK de outra tabela

0 respostas
gRoOve

Olá, estou tentando pegar o campo login da minha tabela Usuario e fazer um JOIN na tabela GrupoAcesso, que tem um campo chamado login também, eu preciso que quando eu preencher o campo login na tabela Usuario, na hora de persistir o valor também seja gravado na tabela GrupoAcesso, no campo login. Tem como?
Segue o código para ilustração:

package com.modelo.bean;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;

@MappedSuperclass
public abstract class Usuario implements Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	protected Integer idUsuario;
	
	@Column(unique = true, length = 20, nullable = false)
	protected String login;
	
	@Column(length = 16, nullable = false)
	protected String senha;
	
	@Column(length = 60, nullable = false)
	protected String nome;
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "idContato")
	protected Contato contato = new Contato();
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "idEndereco")
	protected Endereco endereco = new Endereco();
	
	@OneToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
	@JoinColumn(name = "login", insertable=false, updatable=false, referencedColumnName = "login")
	protected GrupoAcesso grupoAcesso = new GrupoAcesso();
	
//	@ManyToOne(cascade = CascadeType.ALL)
//	@JoinColumn(name = "login", insertable=false, updatable=false)
//	protected GrupoAcesso grupoAcesso = new GrupoAcesso();

	public Integer getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
}
package com.modelo.bean;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

@Entity
public class GrupoAcesso implements Serializable {

	@Id
	private String login;
	private String nomeGrupoAcesso = "promotor";

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getNomeGrupoAcesso() {
		return nomeGrupoAcesso;
	}

	public void setNomeGrupoAcesso(String nomeGrupoAcesso) {
		this.nomeGrupoAcesso = nomeGrupoAcesso;
	}
	
}
Criado 12 de maio de 2012
Respostas 0
Participantes 1