Добрый день, вот проблема: CrudRepository возвращает неправильный идентификатор для сущностей.
Вот базовая сущность пользователя JPA:
@Data
@Entity(name = "user")
@EqualsAndHashCode(exclude = {"roles", "password", "data"})
@ToString(exclude = {"roles", "password", "data"})
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
private SomeData data;
...
Существует отношение один к одному с некоторыми data entity.
@Data
@Entity(name = "some_data")
@TypeDefs({
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
})
@ToString(exclude = {"user", "views", "biData"})
@EqualsAndHashCode(exclude = {"user", "views", "biData"})
public class SomeData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne
@MapsId
private User user;
...
И есть хранилище crud:
@Repository
public interface SomeDataRepository extends CrudRepository<SomeData, Long> {
Optional<SomeData> findByUserId(Long userId);
}
Метод findUserById возвращает правильный объект SomeData из БД, но этот объект имеет тот же идентификатор с userId ... И потому я не могу выполнять другие действия (вставка или обновление таблицы "public_view" нарушает ограничение внешнего ключа "fk_view_to_some_data")
Это довольно странно.