fernandogodoy18 9 de mar. de 2011
Bom eu num sei se entendi bem mais este gera FK e não UK
mais eu vou testar!
paribe 10 de mar. de 2011
nesse exemplo que te passei é uma chave UK composta de dois campos onde um deles de uma FK com outra tabela
por referência pois só vai entrar valor nesse campo se existir na tabela pai.
outro exemplo abaixo onde existe três campos como chave na classe PostoUsuarioId
e na classe abaixo como vai ficar chave composta UK e suas referência
espero ter ajudado…
@ Embeddable
public class PostoUsuarioId implements Serializable {
private static final long serialVersionUID = - 4476596399409381166 L ;
@ Column ( name = "CD_POSTO_ATENDIMENTO" )
private Long postoId ;
@ Column ( name = "CD_USUARIO" )
private Long usuarioId ;
@ Column ( name = "CD_PERFIL" )
private Long perfilId ;
public PostoUsuarioId () {
}
PostoUsuarioId ( Long usuarioId , Long postoId , Long perfilId ) {
this . usuarioId = usuarioId ;
this . postoId = postoId ;
this . perfilId = perfilId ;
}
public Long getPostoId () {
return postoId ;
}
@Entity
@Table ( name = "TB_PTA_POSTO_AGENDAMENTO" )
public class PostoAgendamento implements EntityModel {
@EmbeddedId
private PostoAgendamentoId id ;
private Manutencao manutencao ;
@ManyToOne
@JoinColumn ( name = "CD_POSTO_ATENDIMENTO" , insertable = false , updatable = false )
private Posto posto ;
@ManyToOne
@JoinColumn ( name = "CD_AGENDAMENTO" , insertable = false , updatable = false )
private Agendamento agendamento ;
public PostoAgendamento () {
}
public PostoAgendamento ( Posto posto , Agendamento agendamento , Long idUsuario ) {
this . posto = posto ;
this . agendamento = agendamento ;
id = new PostoAgendamentoId ( posto . getId (), agendamento . getId ());
manutencao = new Manutencao ( idUsuario );
}
public Serializable getId () {
return id ;
}
public Manutencao getManutencao () {
return manutencao ;
}
public Posto getPosto () {
return posto ;
}
public void setPosto ( Posto posto ) {
this . posto = posto ;
}
paribe 10 de mar. de 2011
não lê a classe PostoAgendamento e assim a de baixo assim fica mais facil
de entender…
abs
@Entity
@Table ( name = "TB_PTA_PERFIL_POSTO_USUARIO" )
public class PerfilPostoUsuario implements EntityModel {
@EmbeddedId
private PostoUsuarioId id ;
private Manutencao manutencao ;
@ManyToOne
@JoinColumn ( name = "CD_USUARIO" , insertable = false , updatable = false )
private Usuario usuario ;
@ManyToOne
@JoinColumn ( name = "CD_POSTO_ATENDIMENTO" , insertable = false , updatable = false )
private Posto posto ;
@ManyToOne
@JoinColumn ( name = "CD_PERFIL" , insertable = false , updatable = false )
private Perfil perfil ;
public PerfilPostoUsuario ( Usuario usuario , Posto posto , Perfil perfil , Long idUsuario ) {
this . usuario = usuario ;
this . posto = posto ;
this . perfil = perfil ;
id = new PostoUsuarioId ( usuario . getId (), posto . getId (), perfil . getId ());
manutencao = new Manutencao ( idUsuario );
}
public PostoUsuarioId getId () {
return id ;
}
public Manutencao getManutencao () {
return manutencao ;
}
public Usuario getUsuario () {
return usuario ;
}
public void setUsuario ( Usuario usuario ) {
this . usuario = usuario ;
}
paribe 10 de mar. de 2011
um exemplo na pratica…
boa sorte
fernandogodoy18 10 de mar. de 2011
Otimos ambos exemplos,
Consegui adaptar pra utilizar no meu sistema aqui e cairam como uma luva…
e para um outro sistema que estou desenvolvendo para meu estágio acho que vou utilizar uma delas…
De quebra ainda consigui fazer de outra forma diferente que por sinal estou utilizando agora!
Adionando estas anotations
@Entity
@Table ( name = "CLIENTE" , uniqueConstraints = {
@UniqueConstraint ( columnNames = { "CNPJ" , "idEmitente" } ),
@UniqueConstraint ( columnNames = { "CPF" , "idEmitente" } ) } )
Obrigado!
Mr.style 17 de mar. de 2011
Opaa
ficou bacana este modeo,
vou utilizar no meu projeto tbm
^^