|
|
Você nao precisa criar a classe que representa a tabela de ligação neste caso.
http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#ManyToMany
2010/3/6 Walter Mourão <walter.mourao@xxxxxxxxx>
Porque você precisa de manipular a tabela equipe_operador diretamente ?
Walter Mourão http://waltermourao.com.br http://arcadian.com.br
http://oriens.com.br
2010/3/5 Samer <samer.jamal@xxxxxxxxx>
Pessoal, gostaria de saber como fazem para mapear relacionamentos
ManyToMany.
To achando meio bizarro a maneira que fiz, vou explicar:
Tenho as classes Equipe¹ e Operador², na Equipe declaro uma lista de
Operadores e mapeio o get com a anotação @ManyToMany, na minha
ViewEquipe eu utilizo uma lista populada de operadores nas checkboxes
e o value como equipe.operadores.
Tá gravando tudo certinho, gera a tabela equipe_operador com as PK's
de cada entidade e é aí que tá o meu incomodo.
Como preciso manipular a tabela intermediária equipe_operador, acabo
criando uma classe EquipeOperador, ou seja, pra criar a classe
EquipeOperador acabo tendo que mapear uma PK da própria entidade
EquipeOperador³, e to achando isso uma merda, pois a tabela gerada
automaticamente com a anotação @ManyToMany não tem PK.
Quem tiver paciencia, poderia sanar minhas dúvidas:
- Daria pra criar uma PK equipeOperadorId na anotação @ManyToMany?
- Alguém poderia me explicar como eu poderia fazer isso de maneira
bidirecional (OneToMany nas classes Equipe e Operador e ManyToOne na
classe EquipeOperador)? Com essa abordagem, não usaria ManyToMany,
como ficaria a minha lista de operadores e o value?
- Existe outra maneira pra contornar essa situação?
Segue meu código:
public class Equipe {
private Integer equipeId;
private String name;
private List<Operador> operadores;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "equipe_id")
public Integer getEquipeId() {
return equipeId;
}
@ManyToMany
@JoinTable(name = "equipe_operador",
joinColumns = @JoinColumn(name = "equipe_id"),
inverseJoinColumns = @JoinColumn(name = "operador_id"))
public List<Operador> getOperadores() {
return operadores;
}
// construtor, get's, set's, hash e equals
}
public class Operador {
private Integer operadorId;
private String name;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "operador_id")
public Integer getOperadorId() {
return operadorId;
}
// construtor, get's, set's, hash e equals
}
public class EquipeOperador {
private Integer equipeOperadorId;
private Equipe equipe;
private Operador operador;
// Aqui que tá a merda!! <=================
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "equipe_operador_id")
public Integer getEquipeOperadorId() {
return this.equipeOperadorId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "equipe_id")
@NotNull
public Equipe getEquipe() {
return this.equipe;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "operador_id", nullable = false)
@NotNull
public Operador getOperador() {
return this.operador;
}
// construtor, get's, set's, hash e equals
}
<s:decorate id="operador">
<ui:define name="label">Operadores</ui:define>
<t:selectManyCheckbox value="#{equipe.operadores}">
<s:selectItems var="_operador" value="#{operadores}"
label="#{_operador.nome}" />
</t:selectManyCheckbox>
</s:decorate>
[/code]
Sei que são muitos dúvidas, mas to com medo de estar fazendo muita
besteira.
Abraços!!!
--
http://groups.google.com/group/javasf
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to javasf@xxxxxxxxxxxxxxxx
-- Thiago Alves de Moraes thiagoampj@xxxxxxxxx
--
http://groups.google.com/group/javasf
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to javasf@xxxxxxxxxxxxxxxx
|
|