У меня есть две сущности
@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> {