org.mise en veille prolongée.MappingException: la répétition d'une colonne dans la cartographie de l'entité
Je suis en train de faire un simple système de Sondage. J'ai 2 tables:
Person
: ID, Nom, Prénom
Vote
: L'IDENTIFIANT de Vote (Boolean), VoterID (C'est en fait FK_PersonID
), PersonID (C'est en fait FK_PersonID
).
J'ai besoin d'être en mesure d'identifier qui jettent le droit de vote et qui le vote a été pour - aide les personnes présentes dans la Person
table pour les deux de ces besoins. Le tableau Person
contient les détails de l'utilisateur de personnes qui peuvent "Voter" ainsi que "Voter pour". Les gens sont autorisés à décider s'ils veulent voter pour eux-mêmes ou pas.
J'ai tracé mes tables de ma domain
objets comme ceci:
Personne
private Integer ID;
private String name;
private String surname;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
public Integer getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "surname")
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
Vote
private Integer ID;
private Person voter;
private Person person;
private Boolean vote;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
public Integer getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
@Column(name = "vote")
public Boolean getVote() {
return vote;
}
public void setVote(Boolean vote) {
this.vote = vote;
}
@ManyToOne
@JoinColumn(name = "personID")
public Person getVoter() {
return voter;
}
public void setVoter(Person voter) {
this.voter = voter;
}
@ManyToOne
@JoinColumn(name = "personID")
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
Message d'erreur
Causés par: org.mise en veille prolongée.MappingException: la répétition d'une colonne dans la cartographie
pour l'entité: web.sondage.domaine.Vote de la colonne: personID (doit être mappé
avec insert="false" update="false")
OriginalL'auteur ThreaT | 2012-08-17
Vous devez vous connecter pour publier un commentaire.
Vous utilisez le même
@JoinColumn
des électeurs et par personne. Changement de@JoinColumn("personID")
associé de la personne et@JoinColumn("voterID")
pour les associés de l'électeur et tout doit être beau.Comme une note de côté parce que vous avez marqués ce avec
domain-driven-design
... Votre vote de classe serait plus DDD style si mis en œuvre comme ceci:Juste un exemple, je ne sais pas si j'ai le sens de votre
vote
boolean droite pour indiquer un up/down vote.OriginalL'auteur lost
raison pour laquelle l'exception est le morceau de code ci-dessous, et vous avez de la relation à la Personne de l'entité à deux reprises de Vote de l'entité. Pourquoi avez-vous besoin d'avoir une relation à deux reprises?
Voter
pouvez vote ainsi que voté pourIl a expliqué que, dans la question, de voter contient des informations sur les personnes qui ont voté, ainsi que la personne qui a voté pour
OriginalL'auteur Meiyappan Kannappa