首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在springMvc中使用hibernate annotations?

如何在springMvc中使用hibernate annotations?
EN

Stack Overflow用户
提问于 2016-04-22 21:54:50
回答 1查看 22关注 0票数 0

我在和spring MVC``Spring security hibernate一起工作

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

代码语言:javascript
复制
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)
);

我正在开发一个用于用户管理的compte应用程序,管理员添加用户信息并提交(第一个表单中的数据插入到user数据库中),然后在另一个jsp中添加该用户的身份验证数据并提交(这里的数据插入到第二个数据库jsp中)

jsp页面中插入user表的表单在没有连接到任何其他表的情况下是正确的,但是当我尝试在应用程序中使用hibernate注释并连接usercompte这两个表时,我遇到了错误:

代码语言:javascript
复制
Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: com.package.domain.User.compte, referenced property unknown: com.package.domain.Compte.User

user.java:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
@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 :我在数据库中创建了两个表,以便在spring security中使用第二个表进行身份验证。如果我的数据库设计不正确,请告诉我:)

EN

回答 1

Stack Overflow用户

发布于 2016-04-22 22:07:36

首先,您不需要在mappedBy中指定类名(User),而需要指定属性名(user

代码语言:javascript
复制
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private Compte compte;

在我看来,通过一个额外的外键将CompteUser关联起来会更好,我希望在User表中包含loginpassword

代码语言:javascript
复制
@Entity
@Table(name = "users")
public class User {

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

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

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

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

}

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

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

  @OneToOne
  @JoinColumn(name = "fk_user")
  private User user;

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

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36795739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档