PersistenceException aufgetreten : org.hibernate.Ausnahme.ConstraintViolationException: could not insert: [- Modelle.Benutzer]
Habe ich diese Ausnahme!!
hier ist mein model-Klasse
@Entity
public class User extends Model {
@OneToMany(mappedBy="email", cascade=CascadeType.ALL)
public List<Photo> photo;
@Email
@Required
@Unique
public String email;
@Required
public String passwordHash;
@Required
public String education;
@Required
public String fname;
@Required
public String lname;
@Required
public Date dob;
@Required
public String gender;
@Required
public String country;
@Required
public Long phone;
@Required
public String status;
@Required
public String jobtitle;
@Required
public String company;
@Required
public String industry;
@Required
public Date addDate;
public String needConfirmation;
public User(String email, String password, String fname,
String lname, Date dob, String gender, String country,
Long phone, String status, String education, String jobtitle, String company, String industry) {
//all initialization here
}
}
können Sie mir bitte sagen, wohin ich gehe falsch
playframework× 2289
this is my photo class, and please tell me how can I allow JPA to generate my database
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package models;
import controllers.Users;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import play.db.jpa.Model;
/**
*
* @author nPandey
*/
@Entity
public class Photo extends Model{
public String photoname;
@ManyToOne
public User email;
public String owner;
public Photo(){
}
public Photo(User email, String photo){
this.photoname=photo;
this.email=email;
this.owner=email.email;
}
}
- Können Sie zeigen die
Photo
Klasse, wie gut? DiemappedBy
Wert sieht verdächtig aus. Sowas btw immer einen Versuch geben wird, löschen Sie Ihre Datenbank und Ihre JPA-impl erzeugen Sie es erneut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie, dass Ihre Einheit nicht fehlen alle erforderlichen Felder aus, wenn es beibehalten wird /aktualisiert. Prüfen Sie auch, welche Einschränkungen sind auf die Benutzer-Tabelle in der DB (eindeutige Schlüssel, Fremdschlüssel, der nicht null...).
jpa.ddl
-Einstellung, die Sie wollen, um es zu "create-drop", aber NIE lassen Sie es bei dieser Einstellung in der Produktion, oder es werde wischen Sie die Produktions-DB).Ihre
mappedBy
Wert macht wenig Sinn. Es wird über das passive Ende einer bidirektionalen Assoziation. In diesen Fällen verweist er auf das Attribut der anderen Klasse auf die andere Seite der Beziehung. Sie deutete auf eines der Attribute derUser
Klasse. Vielleicht ist dein Foto Klasse hat eineemail
Attribut, aber ist, dass der TypUser
( ich vermute nicht). Also, wenn dies ist eine bi-direktionale Assoziation, legen Sie diemappedBy
Wert auf das Attribut aufPhoto
mit den entsprechenden@ManyToOne
"zurück", um dieUser
. Wenn es ist eine unidirektionale Assoziation, entfernen Sie die mappedBy-und vielleicht mit @JoinColumn zu verwenden, die die foreign key-mapping-Strategie, unidirektionale eins-zu-vieleIch Stand vor dem gleichen Problem und hab es gelöst, indem verhältnisbezogenen notation von
OneToMany
zuManyToMany
. In Meinem Fall warManyToMany
Zusammenhang zwischen Job-und Person-Tabelle und ich war versucht, hinzuzufügen gleichen jobList an mehrere person-Objekt in einer Schleife.War das problem mit der annotation verwendet in Person Entity-Klasse für die Job-Einrichtung:
Versuchen, die Bearbeitung der code, wie unten -
Im Benutzer-Modell
In Foto-Modell
Überprüfen Sie dieses für Referenz - http://en.wikibooks.org/wiki/Java_Persistence/OneToMany#Example_of_a_OneToMany_relationship_and_inverse_ManyToOne_annotations