Java:Hibernate @OneToOne映射
我试图让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
,我希望User.getStatus()
将返回id=1
的Status
对象。 相反,我得到一个AnnotationException:“引用的属性不是一个(一个|多个)ToOne:Status.userId in mappedBy User.status”
我已经在这里倾听了文档,教程和示例,但到目前为止我尝试过的所有内容都失败了。
另外值得注意的是:这应该支持一对一或零关系,因为一些user
和content
记录在status
表中没有引用。
任何帮助将不胜感激!
您的Status实体不得具有Integer类型的属性userId
和contentId
,并使用@Column
映射。 它必须具有属性user
和user
和content
类型的内容,与@OneToOne
映射:
public class User { @OneToOne(mappedBy = "user") private Status status; // ... } public class Status { @OneToOne @JoinColumn(name = "frn_user_id") private User user; // ... }
用户具有一种状态。 状态有一个用户。
- hibernate.hbm2ddl.import_files:文件的路径
- 如何在Eclipse中使用Hibernate Tools生成DAO?
- 使用java,hibernate web应用程序一次限制用户登录单个会话而不使用spring
- Hibernate Envers因@Converter和AttributeConverter而失败(JPA 2.1)
- 使用哪一个:OpenSessionInViewInterceptor或OpenSessionInViewFilter?
- 使用Hibernate OGM进行MongoDb身份validation
- Struts Spring和Hibernate集成在线考试
- 使用Hibernate / Spring生成数据库更新脚本
- 基于Hibernate的Java Servlet应用程序中的Hibernate Communications Link失败,由MySQL提供支持