Mapeamento

2 respostas
O

Boa tarde galera.
Estou com um problema. Eu tenho uma classe (Usuario) que vai conter duas colecoes da classe Mensagem. Na classe Mensagem eu tenho que ter duas chaves estrangeiras de Usuario que vai significar: remetente e destinatario. Eu fiz esse mapeamento e pelo SQL ele cria os campos porem nem inseri e nem consta.
A minha entity Mensagem tem que ter duas chaves estrangeiras de Usuario sendo que uma é de remetente e outra de destinatario.
Veja o meu mapeamento e por favor me mostrem como eu posso fazer isso. Vou colocar o meu mapeamento resumido
Classe Usuario.

@Entity
@Table(name="Usuarios", schema="MGFSaga")
@SequenceGenerator(name="SEQ_USUARIO", sequenceName="SEQ_USUARIO")
public class UsuarioVO implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO, generator="SEQ_USUARIO")
	@Column(name="idUsuario")
	private Long idUsuarioVO;
	
		
	@OneToMany(mappedBy="destinatarioVO", fetch=FetchType.LAZY)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Set<MensagemVO> mensagemEnviadaVO;
	
	@OneToMany(mappedBy="remetenteVO", fetch=FetchType.LAZY)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Set<MensagemVO> mensagemRecebidaVO;
}

Classe Mensagem

@Entity
@Table(name="Mensagens", schema="MGFSaga")
@SequenceGenerator(name="SEQ_MENSAGEM", sequenceName="SEQ_MENSAGEM")
public class MensagemVO implements Serializable{

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO, generator="SEQ_MENSAGEM")
	@Column(name="idMensagem")
	private Long idMensagemVO;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idDestinatario", insertable=true, updatable=true, nullable= false)
	private UsuarioVO destinatarioVO;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idRemetente", insertable=true, updatable=true, nullable = false)
	private UsuarioVO remetenteVO;

}

Para abranger o que eu quero, o meu mapeamento esta correto? Obrigado!

2 Respostas

O

Bom dia galera.
Sera que ninguem pode me ajudar? Desculpe me o desespero.

dicabeca

tem alguns problemas de mapeamento,mais primeiro onde voce pega o remetente e o destinatario,eu acho q o hibernate e chato com essas paradas,troque o nome dos metodos para getRem… e getDesti…,ja no mapeamento como esses caras sao chave estrangeiras,vc precisa fzr mais uma classe q seria a MensagemVOID,com os metodos citados acima,coloque o metodo getId retornando esse ID na sua classe MensagemVO,e em cima desse construtor colocar isto

@EmbeddedId
@AttributeOverrides( { @AttributeOverride(name = "rementente", column = @Column(name = "Rementente", unique = false, nullable = false, insertable = true, updatable = true)),
                               @AttributeOverride(name = "destinatario", column = @Column(name = "destinatario", unique = false, nullable = false, insertable = true, updatable = true, length = 23)) })

lembrando q ja tenha feito essas duas classes Rementente e Destinatario,entendeu ??qualquer coisa posta ai vlw???

Criado 10 de outubro de 2007
Ultima resposta 11 de out. de 2007
Respostas 2
Participantes 2