Java: mapeamento Hibernate @OneToOne
Estou tentando fazer com que as anotações do Hibernate @OneToOne funcionem e não tenham muito sucesso aqui ...
Digamos que eu tenho uma tabela chamadastatus
que se parece com isso:
+------------------------------------------------+
| status |
+------------------------------------------------+
| id | frn_user_id | frn_content_id | status |
+----+-------------+----------------+------------+
| 1 | 111 | 0 | "active" |
+----+-------------+----------------+------------+
| 2 | 0 | 222 | "inactive" |
+----+-------------+----------------+------------+
E eu tenho uma entidade paraUser
que se parece com isso:
@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
}
E semelhante paraContent
e outra entidade paraStatus
que se parece com isso:
@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
}
Quando executo uma leituraUser
, Eu espero issoUser.getStatus()
retornará umStatus
objeto comid=1
. Em vez disso, recebo uma AnnotationException: "Propriedade referenciada não um (Um | Muitos) ToOne: Status.userId em mappedBy User.status"
Analisei documentos, tutoriais e exemplos aqui no SO, mas tudo o que tentei até agora falhou.
Também vale a pena notar: isso deve apoiar um relacionamento um para zero ou um, pois algunsuser
econtent
registros não terão uma referência nostatus
mesa.
Qualquer ajuda seria muito apreciada!