我正在使用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注释并加入两个表user
和compte
时,我有错误:
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
中使用第二个表进行身份验证请告诉我:)
答案 0 :(得分:1)
首先,您需要在User
user
),而是指定属性名称(mappedBy
)
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private Compte compte;
在我看来,最好通过额外的外键将Compte
与User
相关联,我希望在{{login
和password
1}}表。
User