onetoone onetomany one many example ejemplo java hibernate jpa one-to-one hibernate-annotations

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!