我正在尝试使Hibernate @OneToOne注释正常工作,并且在这里没有太大的成功…
假设我有一个名为的表格status
,看起来像这样:
+------------------------------------------------+
| status |
+------------------------------------------------+
| id | frn_user_id | frn_content_id | status |
+----+-------------+----------------+------------+
| 1 | 111 | 0 | "active" |
+----+-------------+----------------+------------+
| 2 | 0 | 222 | "inactive" |
+----+-------------+----------------+------------+
我有一个User
看起来像这样的实体:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false)
private Integer id;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "userId")
private Status status;
// getters and setters
}
还有一个类似的Content
,另一个实体Status
看起来像这样:
@Entity
@Table(name = "status")
public class Status {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "frn_user_id")
private Integer userId;
@Column(name = "frn_content_id")
private Integer contentId;
@Column(name = "status")
private String status;
// getters and setters
}
当我进行读取时User
,我希望User.getStatus()
它将返回带有的Status
对象id=1
。相反,我得到一个AnnotationException:“引用的属性不是(One
| Many)ToOne:mappedBy User.status中的Status.userId”
我在此处介绍了文档,教程和示例,但是到目前为止,我尝试过的所有方法都失败了。
还值得注意的是:这应该支持一对零或一对一的关系,因为某些user
和content
记录在status
表中将没有引用。
任何帮助将不胜感激!
您的状态实体不能有性能userId
和contentId
整数类型,映射与@Column
。它必须具有类型为“用户和内容”的属性user
,content
并映射为@OneToOne
:
public class User {
@OneToOne(mappedBy = "user")
private Status status;
// ...
}
public class Status {
@OneToOne
@JoinColumn(name = "frn_user_id")
private User user;
// ...
}
用户具有一种状态。状态有一个用户。
我有2个实体:Field和ViewOptions 省略与问题无关的字段和方法
问题内容: 假设我有个人 和工作 提取时,我无法将Person和Job映射到其他实体。 我在做什么错? 问题答案: 您的代码应为: (尝试从工作中删除重复的列’person_id’) 或其他共享主键的方法:
我读过一个映射是“关系在Java中是指源对象有一个引用另一个目标对象的属性,并且(如果)目标对象与源对象有反向关系,它也将是一个一个关系。”来源:http://en.wikibooks.org/wiki/java_persistence/OneToOne 基于以上,我假设一个表可以引用基数为(零)1的另一个表,而这个表可以反向引用基数为(零)1的第一个表。 所以,我创建了这个简单的实体(Cust可
我一直试图通过一个名为Guardian的中间类映射两个用户之间的一些“OneToOne”关系。当我试图检索一个用户(和他的监护人)时,从Glassfish(Open edition V4.0)返回一个内部服务器错误。但是,日志中没有显示任何类型的堆栈跟踪或任何错误。我怀疑问题是我在JPA类中的映射。 启动服务器时,我得到两个与Guardian类有关的警告,但我并不真正理解: 警告:映射到元素[me
我不熟悉Spring数据jpa,并试图理解@OneToOne映射。假设我有一个员工实体和一个公司实体,如果我想映射这两个实体,那么我可以在员工实体上使用一对一映射,这意味着一个员工只能属于一个公司。这种理解是错误的吗?如果一名员工属于一家公司(比如XYZ),那么该公司(XYZ)不能映射到其他员工? 我读过一些帖子,但没有完全理解。
我在使用模型映射器使用执行父子实体更新时遇到了一个问题。 描述如下 父类: 儿童班: 通过这种安排,我能够成功地创建和查询站点地址组合。但是,我在进行更新时遇到了一个问题。我正在尝试使用modelmapper语句更新站点或地址,如下所示: 期望在传入站点中更改的所有字段(即来自请求的站点)应替换站点中的现有字段。但是,我从modelmapper中得到一个Stackoverflow错误。 我们是否有