如何在springMvc中使用hibernate注释OnetoOne?

时间:2016-04-22 13:54:50

标签: database hibernate spring-mvc

我正在使用spring MVC``Spring security hibernate

我在数据库中创建了2个表,这个模式:

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)
);

我正在为用户管理开发一个Web应用程序,管理员添加用户的信息并提交(将第一个表单中的数据插入到user数据库中)然后在另一个jsp中他为此用户添加了身份验证数据并提交(此处数据已插入第二个数据库compte

在jsp页面中插入user表格的表单在未加入任何其他表格时正确完成。 但是当我尝试在我的应用程序中使用hibernate注释并加入两个表usercompte时,我有错误:

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

我不知道如何将compte数据插入第二个表格?如何识别登录名和密码对应于刚刚插入的用户ID。

PS:我已经在数据库中创建了2个表,如果我的数据库设计不正确,请在spring security中使用第二个表进行身份验证请告诉我:)

1 个答案:

答案 0 :(得分:1)

首先,您需要在User

中指定不是类名(user),而是指定属性名称(mappedBy
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private Compte compte;

在我看来,最好通过额外的外键将CompteUser相关联,我希望在{{loginpassword 1}}表。

User