create table eleitor (id integer, nome varchar(40), primary key (id));
create table enquete (id integer, perguntar varchar(40), primary key (id));
create table voto (id_eleitor integer, id_enquete integer, primary key(id_eleitor,id_enquete), FOREIGN KEY (id_eleitor) references eleitor(id), FOREIGN KEY (id_enquete) references enquete(id));
O mapeamento em JPA seria o seguinte:
@Entity
@Table(name = "ELEITOR", catalog = "", schema = "APP")
@NamedQueries({
@NamedQuery(name = "Eleitor.findAll", query = "SELECT e FROM Eleitor e"),
@NamedQuery(name = "Eleitor.findById", query = "SELECT e FROM Eleitor e WHERE e.id = :id"),
@NamedQuery(name = "Eleitor.findByNome", query = "SELECT e FROM Eleitor e WHERE e.nome = :nome")})
public class Eleitor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "NOME", length = 40)
private String nome;
@JoinTable(name = "VOTO", joinColumns = {
@JoinColumn(name = "ID_ELEITOR", referencedColumnName = "ID", nullable = false)}, inverseJoinColumns = {
@JoinColumn(name = "ID_ENQUETE", referencedColumnName = "ID", nullable = false)})
@ManyToMany
private Collection enqueteCollection;
public Eleitor() {
}
public Eleitor(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Collection getEnqueteCollection() {
return enqueteCollection;
}
public void setEnqueteCollection(Collection enqueteCollection) {
this.enqueteCollection = enqueteCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Eleitor)) {
return false;
}
Eleitor other = (Eleitor) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "modelo.Eleitor[id=" + id + "]";
}
}
@Entity
@Table(name = "ENQUETE", catalog = "", schema = "APP")
@NamedQueries({
@NamedQuery(name = "Enquete.findAll", query = "SELECT e FROM Enquete e"),
@NamedQuery(name = "Enquete.findById", query = "SELECT e FROM Enquete e WHERE e.id = :id"),
@NamedQuery(name = "Enquete.findByPerguntar", query = "SELECT e FROM Enquete e WHERE e.perguntar = :perguntar")})
public class Enquete implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "PERGUNTAR", length = 40)
private String perguntar;
@ManyToMany(mappedBy = "enqueteCollection")
private Collection eleitorCollection;
public Enquete() {
}
public Enquete(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPerguntar() {
return perguntar;
}
public void setPerguntar(String perguntar) {
this.perguntar = perguntar;
}
public Collection getEleitorCollection() {
return eleitorCollection;
}
public void setEleitorCollection(Collection eleitorCollection) {
this.eleitorCollection = eleitorCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Enquete)) {
return false;
}
Enquete other = (Enquete) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "modelo.Enquete[id=" + id + "]";
}
}