java - example - onetomany joincolumn
Java: mapeo Hibernate @OtoToOne (1)
Su entidad de estado no debe tener propiedades userId y contentId de tipo Integer, mapeadas con @Column . Debe tener propiedades de user y content de tipo Usuario y contenido, mapeados con @OneToOne :
public class User {
@OneToOne(mappedBy = "user")
private Status status;
// ...
}
public class Status {
@OneToOne
@JoinColumn(name = "frn_user_id")
private User user;
// ...
}
Un usuario tiene un estado. Un estado tiene un usuario.
Estoy intentando hacer funcionar las anotaciones de Hibernate @ OneToOne y no tener mucho éxito aquí ...
Digamos que tengo una tabla llamada status que se ve así:
+------------------------------------------------+
| status |
+------------------------------------------------+
| id | frn_user_id | frn_content_id | status |
+----+-------------+----------------+------------+
| 1 | 111 | 0 | "active" |
+----+-------------+----------------+------------+
| 2 | 0 | 222 | "inactive" |
+----+-------------+----------------+------------+
Y tengo una entidad para el User que se ve así:
@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
}
Y uno similar para Content , y otra entidad para Status que se ve así:
@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
}
Cuando realizo una lectura en User , espero que User.getStatus() devuelva un objeto Status con id=1 . En cambio, obtengo una AnnotationException: "Propiedad referenciada no a (Uno | Muchos) ToOne: Status.userId en mappedBy User.status"
He recorrido los documentos, tutoriales y ejemplos aquí en SO, pero todo lo que he intentado hasta ahora ha fallado.
También vale la pena señalar: Esto debería admitir una relación de uno a cero o uno, ya que algunos registros de user y content no tendrán una referencia en la tabla de status .
¡Cualquier ayuda sería muy apreciada!