В отношении OneToOne я получаю:
NULL not allowed for column "USER_ID"; SQL statement:
insert into customer_order (id, enabled, orden_id) values (null, ?, ?)
.
На самом деле это null
, потому что его нет в запросе INSERT
. Однако значение USER
заполняется в сущности customerOder
при выполнении save(customerOrder)
.
@Getter
@SuperBuilder
@MappedSuperclass
@NoArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public abstract class AbstractEntity {
@Id
@EqualsAndHashCode.Include
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Setter
@Default
@Column(columnDefinition = "BOOLEAN DEFAULT 'true'", nullable = false)
private Boolean enabled = Boolean.TRUE;
}
@Getter
@Setter
@Entity
@Table(name = "customer_order")
@SuperBuilder
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true)
public class CustomerOrderEntity extends AbstractEntity {
@OneToOne(fetch = FetchType.LAZY)
@MapsId("id")
private UserEntity user;
//other values
}
@Data
@Entity
@Table(name = "user")
@SuperBuilder
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true)
public class UserEntity extends AbstractEntity {
@NaturalId
@EqualsAndHashCode.Include
@Column(length = 28, unique = true, nullable = false)
private String uuid;
//other values
}
Я ожидаю, что customerOrder
сохранится в базе данных с заполненными данными.