Salve povo!!!
Pessoal,
no banco de dados:
[code]
G_PERFIL
ID_PERFIL (PK)
DESCRICAO
SITUACAO
DATA_CRIACAO
ID_USUARIO (FK)
G_PERFIL_ACAO
ID_PERFIL (PK)
ID_ACAO (PK)
CODIGO
DESCRICAO
G_ACAO
ID_ACAO (PK)
DESCRICAO
COD_ACAO
[/code]
A tabela G_PERFIL_ACAO é de muitos pra muitos entre G_PERFIL e G_ACAO
No java tenho as seguintes classes para representar este caso:
Classe: Perfil
[code]
@Entity
@Table(name = "g_perfil")
public class Perfil implements Serializable {
private static final long serialVersionUID = 1L;
@SequenceGenerator(
@GeneratedValue(
@Id
@Basic(optional = false)
@Column(name = "id_perfil", nullable = false)
private Integer id;
@Column(name = "descricao", length = 20)
private String descricao;
@Column(name = "situacao")
private Integer situacao;
@Column(name = "data_criacao"
@Temporal(TemporalT
private Date dataCriacao;
@JoinColumn(
@ManyToOne(fetch = FetchType.EAGER)
private Usuario usuario;
@JoinColumn(
@ManyToOne(fetch = FetchType.LAZY)
private PerfilAcao perfilAcao;
//omiti getters e setters ...
}
[/code]
Classe: PerfilAcao
[code]
@Entity
@Table(name = "g_perfil_acao"
public class PerfilAcao implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected PerfilAcaoPK perfilAcaoPK;
@Column(name = "descricao_modulo"
private String descricaoModulo;
@Column(name = "cod_modulo"
private Integer codModulo;
@JoinColumn(
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Acao acao;
@JoinColumn(
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Perfil perfil;
//omiti getters e setters ...
}
[/code]
Classe: PerfilAcaoPK
[code]
@Embeddable
public class PerfilAcaoPK implements Serializable {
@Basic(optional = false)
@Column(name = "id_perfil", nullable = false)
private int idPerfil;
@Basic(optional = false)
@Column(name = "id_acao", nullable = false)
private int idAcao;
//omiti getters e setters ...
}
[/code]
Classe: Acao
[code]
@Entity
@Table(name = "g_acao")
public class Acao implements Serializable {
private static final long serialVersionUID = 1L;
@SequenceGenerator(
@GeneratedValue(
@Id
@Basic(optional = false)
@Column(name = "id_acao", nullable = false)
private Integer id;
@Column(name = "descricao", length = 20)
private String descricao;
@Column(name = "cod_acao", nullable = false)
private Integer codigo;
//omiti getters e setters ...
}
[/code]
A exceção que dispara é a seguinte:
[code]
Root cause:
Exception [EclipseLink-
Exception Description: The @JoinColumns on the annotated element [field perfilAcao] from the entity class [class modelo.Perfil] is incomplete. When the source entity class uses a composite primary key, a @JoinColumn must be specified for each join column using the @JoinColumns. Both the name and the referencedColumnNam
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at org.eclipse.
at javax.persistence.
at javax.persistence.
[/code]
O que será que estou fazendo de errado? o mapeamento de um relacionamento composto funciona desta maneira, ou estou surtando? :D
Postei está pergunta no forúm guj, mas como ninguém respondeu postei aqui ;-)
http://www.guj.
Obrigado
Ricardo Spinoza
[As partes desta mensagem que não continham texto foram removidas]
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
0 comentários:
Postar um comentário