Spring JPA - разные сущности с одинаковым идентификатором - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть две сущности

@Entity
@Table(name = "view_a")
public class A extends BaseStringIdTableClass

@Entity
@Table(name = "view_b")
public class B extends BaseStringIdTableClass

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class BaseStringIdTableClass implements Serializable {
  @Id
  private String id;

И в базе данных у меня есть два представления

select * from view_a
|ID|ColumnA|....
|34222|some Value|....

select * from view_b
|ID|ColumnB|...
|34222|lla lla|...

Поэтому у меня в базе данных разные взгляды. Но строки в разных представлениях имеют одинаковый идентификатор.

Теперь я пытаюсь прочитать объекты со стандартным репозиторием CRUD.

A a = aRepository.findById("34222").get();
B b = bRepository.findById("34222").get();

В этом случае я не могу найти сущность b. Если я поменяю две строки кода, я не смогу найти сущность а.

Я думаю, что контекст постоянства может одновременно содержать для определенного идентификатора только одну сущность? Это правильно. Что я могу сделать?

Определения репозитория

public interface ARepository extends JpaRepository<A, String>, QuerydslPredicateExecutor<A> {
public interface BRepository extends JpaRepository<B, String>, QuerydslPredicateExecutor<B> {

1 Ответ

0 голосов
/ 05 сентября 2018

Сон в течение одной ночи всегда помогает .... Сначала извините за мой начальный неполный вопрос.

Проблема / ошибка заключалась в том, что обе сущности расширяли один и тот же абстрактный класс. И в этом абстрактном классе был определен идентификатор.

Исправить после этого распознавания было легко. Одна из сущностей не расширяет мой абстрактный класс, но определяет его собственный идентификатор. И теперь это работает ......

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...