Sha*_*vil 23 java hibernate jpa one-to-one hibernate-annotations
我试图让Hibernate @OneToOne注释工作,而且在这里没有取得多大成功......
假设我有一个名为的表status
,如下所示:
+------------------------------------------------+
| status |
+------------------------------------------------+
| id | frn_user_id | frn_content_id | status |
+----+-------------+----------------+------------+
| 1 | 111 | 0 | "active" |
+----+-------------+----------------+------------+
| 2 | 0 | 222 | "inactive" |
+----+-------------+----------------+------------+
Run Code Online (Sandbox Code Playgroud)
我有一个实体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
}
Run Code Online (Sandbox Code Playgroud)
和一个类似的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
}
Run Code Online (Sandbox Code Playgroud)
当我执行读取时User
,我希望User.getStatus()
它将返回一个Status
对象id=1
.相反,我得到一个AnnotationException:"referenced属性不是(一个|多个)ToOne:Status.userId in mappedBy User.status"
我已经在这里倾听了文档,教程和示例,但到目前为止我尝试的所有内容都失败了.
另外值得注意的是:这应该支持一对一或一对一的关系,因为一些user
和content
记录在status
表中没有引用.
任何帮助将不胜感激!
JB *_*zet 71
您的Status实体不得具有属性userId
和contentId
Integer类型,映射为@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;
// ...
}
Run Code Online (Sandbox Code Playgroud)
用户具有一种状态.状态有一个用户.