2016-04-22 13 views
0

Ich arbeite mit spring MVC``Spring securityhibernateWie Hibernate Annotationen OnetoOne im Frühjahr verwendenMvc?

I 2 Tabellen in der Datenbank erstellt haben, das ist das Schema:

create table user(
id int(10), 
name VARCHAR(30) NOT NULL, 
address VARCHAR(30) NOT NULL, 
PRIMARY KEY (id) 
); 

create table compte(
id int(10), 
login VARCHAR(30) NOT NULL, 
password VARCHAR(30) NOT NULL, 
PRIMARY KEY (id), 
FOREIGN KEY (id) REFERENCES user(id) 
); 

Ich bin für die Nutzer Managements eine Web-Anwendung zu entwickeln, der Administrator des Benutzers Informationen hinzufügen und senden (Daten aus dem ersten Formular werden in die Datenbank user eingefügt) und dann in einem anderen JSP fügt er die Authentifizierungsdaten für diesen Benutzer hinzu und sendet (hier werden Daten in die zweite Datenbank eingefügt

Das Formular in der JSP-Seite, das in die Tabelle user eingefügt wird, wird korrekt ausgeführt, wenn es nicht mit einer anderen Tabelle verknüpft ist. Aber als ich versuchte, Hibernate Annotations in meiner Anwendung zu verwenden und kommen Sie mit den beiden Tabellen user und compte Ich habe Fehler:

Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: com.package.domain.User.compte, referenced property unknown: com.package.domain.Compte.User 

user.java:

@Entity 
@Table(name = "user") 
public class User { 


@Id 
@Column(name="id") 
private int id; 
@Column(name="name") 
private String name; 
@Column(name="address") 
private String address; 

@OneToOne(mappedBy="User", cascade=CascadeType.ALL) 
    private Compte compte; 
//getters and setters 

compte.java:

@Entity 
@Table(name = "COMPTE") 
public class Compte { 

@Id 
@GeneratedValue 
@Column(name = "id") 
private int id; 

@Column(name = "login") 
private String login; 

@Column(name = "password") 
private String password; 


@OneToOne 
@PrimaryKeyJoinColumn 
private User user; 

//getters and setters 

Ich weiß nicht, wie sollte ich compte Daten in die zweite Tabelle einfügen? Wie erkennt man, dass der Login und das Passwort der gerade eingefügten Benutzer-ID entsprechen?

PS: i 2 Tabellen in der Datenbank erstellt hat, den zweiter für die Authentifizierung in spring security zu verwenden, wenn mein Datenbankdesign mir falsch ist bitte sagen :)

Antwort

1

Zunächst müssen Sie nicht einen Klassennamen angeben (User), sondern ein Eigenschaftsnamen (user) in der mappedBy

@OneToOne(mappedBy = "user", cascade = CascadeType.ALL) 
private Compte compte; 

meiner Meinung nach wird es besser sein Compte zum User durch einen zusätzlichen Fremdschlüssel zu assoziieren, und ich möchte login undhabenin der User Tabelle.

Verwandte Themen