У меня есть две сущности. Я хочу каскадно вставить дочернюю сущность, когда сущность владельца сохраняется, и установить SSO_ID дочерней сущности на тот, который был сгенерирован для владельца генератором.
@Entity(name = "USERS")
@Table(name = "USERS")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_GENERATOR")
@SequenceGenerator(name = "ID_GENERATOR", sequenceName = "ID_SEQUENCE")
@Column(name = "SSO_ID")
private Long ssoId;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<UserEmail> userEmails = new ArrayList<>();
// getters, setters etc.
}
@Entity(name = "USER_EMAILS")
@Table(name = "USER_EMAILS")
@IdClass(UserEmailId.class)
public class UserEmail {
@Id
@Column(name = "SSO_ID")
private Long ssoId;
@Id
@Column(name = "USER_MAIL")
private String userMail;
@Id
@Column(name = "START_DATE")
private Date startDate;
@Id
@Column(name = "EMAIL_TYPE")
private String emailType;
@ManyToOne(fetch = FetchType.LAZY)
private User user;
// getters, setters etc.
}
Класс UserEmail
ID:
public class UserEmailId implements Serializable {
private Long ssoId;
private String userMail;
private Date startDate;
private String emailType;
// getters, setters etc.
}
Вместо этого я получаю сообщение об ошибке:
вставить в значения hub_users_emails (user_sso_id, email_type, sso_id, start_date, user_mail) (?,?,?,?,?)
(и т.д.).
параметр привязки [1] as [BIGINT] - [1234837655] => это user_sso_id
(и т.д.).
параметр привязки [3] as [BIGINT] - [null] => это исходный sso_id
Ошибка SQL: 904, SQLState: 42000
o.h.engine.jdbc.spi.SqlExceptionHelper: ORA-00904: "USER_SSO_ID": неверный идентификатор
Я пробовал некоторые другие настройки от одного ко многим (двунаправленный, однонаправленный и т. Д.), Но, похоже, эта проблема сохраняется между всеми реализациями.
Помощь приветствуется.