Не могу сконфигурировать связь OneToOne в Hibernate
Здравствуйте уважаемые форумчане. Двунаправленное отображение. Суть: 2 класса: Электронная почта и RobotInfo.
RobotInfo имеет поле «fk_email_id», которое относится к полю «email_id» в таблице электронной почты.
Проблема: когда вы вызываете findAll в EmailDAO и RobotInfoDAO, есть записи, для которых связанные объекты инициализируются (для roboticinfo-> email, а для email-> roboticinfo) null значением. Ставлю 2-3 дня, не понимаю, как наладить эти отношения В базе все правильно, соблюдается правило FK (т.е. я не могу добавить запись "RobotInfo", не прикрепив к ней запись из таблицы Email)
Email class code:
@Entity
@Data
@EqualsAndHashCode
@Table(name = "emails")
public class Email implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id
@Column(name = "email_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer email_id; // id в таблице на него будет ссылаться таблица robot_info
//another fields
//@OneToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL, mappedBy = "email")
//@OneToOne(targetEntity = RobotInfo.class)
//@OneToOne(mappedBy = "email")
// @OneToOne(targetEntity = RobotInfo.class,mappedBy = "email")
private RobotInfo robotInfo;
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY, mappedBy="email_robot_info")
public RobotInfo getRobotInfo() {
return robotInfo;
}
Code class RobotInfo:
@Component
@Entity
@Data
@AllArgsConstructor
@Table(name= "robot_info")
public class RobotInfo implements Serializable {
@Id
@Column(name = "robot_info_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer robot_info_id;// id в таблице
@Column(name = "fk_email_id")
private Integer fk_email_id;
//@OneToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
//@JoinColumn(name = "email_id")
//@JoinColumn(name = "fk_email_id",referencedColumnName = "email_id")
// @OneToOne(targetEntity = Email.class,cascade = CascadeType.ALL,optional = true)
// @PrimaryKeyJoinColumn
// @JoinColumn(name = "fk_email_id", referencedColumnName = "\"emails\".\"email_id\"")
// @OneToOne(targetEntity = Email.class,cascade = CascadeType.ALL)
// @JoinColumn(referencedColumnName = "email_id",name = "fk_email_id")
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
@JoinColumn(name="email_id", unique=true, nullable=false)
private Email email_robot_info;
//@OneToOne
//@JoinColumn(name = "fk_email_id", referencedColumnName = "\"emails\".\"email_id\"")
public RobotInfo(Email email_robot_info) {
this.email_robot_info = email_robot_info;
}
public RobotInfo() {}
}
Блин, уже 2-3 дня борюсь с проблемой ... Не понимаю в чем дело. Пробовал разные варианты fetching. Учитывая, что EAGER по умолчанию