我有以下表格:
Login -> (id, username, password)
Members -> (member_id, name, address)
id与具有一对一映射的成员_id相关。
我写了两个模型作为例子
html" target="_blank">登录模式:
@Entity
@Table(name = "Login", uniqueConstraints = { @UniqueConstraint(columnNames = "username") })
public class Login {
private int id;
private String username;
private String password;
private Members members;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public int getId() {
return id;
}
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "id", referencedColumnName = "member_id")
public Members getMembers() {a
return members;
}
}
Memeber模型:
@Entity
@Table(name = "Members")
public class Members {
private int member_id;
private String name;
private String address;
@Id
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign", parameters = { @Parameter(name = "property", value = "Login") })
@Column(name = "member_id")
public int getMember_id() {
return member_id;
}
private Login login;
@OneToOne(fetch = FetchType.LAZY, optional = true, cascade = CascadeType.ALL)
public Login getLogin() {
return login;
}
}
为了简单起见,我放弃了一些getter和setter。不管怎样,你能告诉我哪里出了问题吗?在更改注释值时,我会遇到诸如映射未找到、持久类未知等错误。
错误
org.springframework.web.util.NestedServletExc0019:请求处理失败;嵌套异常是org.springframework.beans.factory.BeanCreationExc0019:错误创建在类路径资源[数据库/Hibernate.xml]中定义的名称'会话工厂'的bean:调用init方法失败;嵌套异常是org.hibernate.注释异常:@OneToOne或@ManyToOneorg.sparsham.login.model.Login.members引用未知实体:org.sparsham.members.model.成员org.springframework.web.servlet.FrameworkServlet.process请求(FrameworkServlet.java:894)org.springframework.web.servlet.FrameworkServlet.do获取(FrameworkServlet.java:778)javax.servlet.http.HttpServlet.service(HttpServlet.java:621)javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
希望这能解决你最后的问题。试试这些改变。
登录模式:
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true)
@PrimaryKeyJoinColumn
public Members getMembers() {a
return members;
}
成员模式:
@Id
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign", parameters = { @Parameter(name = "property", value = "login") })
@Column(name = "member_id")
public int getMember_id() {
return member_id;
}
private Login login;
@OneToOne(fetch = FetchType.LAZY, optional = true, cascade = CascadeType.ALL, mappedBy="members")
@PrimaryKeyJoinColumn
public Login getLogin() {
return login;
}
请注意@GenericGenerator注释中的@Parameter部分,“登录”可能是区分大小写的。
主要内容:@OneToOne示例,程序输出结果一对一映射映射表示一个单值关联,其中一个实体的实例与另一个实体的实例相关联。在这种类型的关联中,源实体的一个实例可以映射到目标实体的一个实例。 完整的项目目录结构如下所示 - @OneToOne示例 在这个例子中,我们将创建一个学生和图书库之间的一对一关系,这样一个学生只能发放一种类型的图书。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,在包下创建一个实体类,含学生ID()和学生姓名
主要内容:@ManyToOne 示例,程序输出结果多对一映射表示实体集合可以与相似实体关联的单值关联。 因此,在关系数据库中,实体的多于一行可以引用另一个实体的相似行。 完整的项目目录结构如下所示 - @ManyToOne 示例 在这个例子中,我们将创建一个学生和图书库之间的多对一关系,多个学生可以发布同一本书。 这个例子包含以下步骤 - 第1步: 在包中创建一个实体类,包含学生ID(s_id)和学生姓名(s_name),其中包含一个包含库类型对
主要内容:@OneToMany 示例,程序输出结果一对多映射进入集合值关联的类别,其中实体与其他实体的集合关联。 因此,在这种类型的关联中,一个实体的实例可以映射到另一个实体的任意数量的实例。 完整的项目目录结构如下所示 - @OneToMany 示例 在这个例子中,我们将创建一个学生和图书库之间的一对多系,这样一个学生能发放多种类型的图书。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,它包含学生ID(s_id),学生姓名(s_na
到目前为止我得到的是: 知道我做错了什么吗?谢谢!
本文向大家介绍MyBatis一对一映射初识教程,包括了MyBatis一对一映射初识教程的使用技巧和注意事项,需要的朋友参考一下 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Jav
有两张数据表,其中A表的某个字段的值指向B表的主键。因为A表的任何一条记录只能对应B表的一条且唯一一条记录,所以称这种 映射为A表对B表数据的一对一映射。(当然,反过来,你也可是说,是B表对A表的一对多映射)。 上述结构,如果用 POJO 来表示的话,可以参看下图: 如上图, Pet 中就可以有一个字段 master,通过自身的 masterId 指向一个 Master 对象,那么我们说 Pet.