Spring Data JPA читает одну и ту же сущность из нескольких таблиц или представлений - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь прочитать одну и ту же сущность из нескольких таблиц (или представлений) с одинаковыми столбцами.Представления являются агрегатами, основанными на сущности, в результате чего получается один и тот же объект.

Например:

@Entity
@Table("bar")
public class Bar(){
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id; 
    @OneToMany(mappedBy = "bar") 
    private Set<Foo> foos;
}

@Entity
@Table("foo")
public class Foo(){
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private Long id;
   private int units;
   private String name;

   @ManyToOne
   private Bar bar; 

}

представление выглядит следующим образом:

create view sum_foo_with_same_name as
  select
    sum(units) AS units,
    name AS name,
    bar_id AS bar_id
  from foo
  group by name, bar_id;

как я могучитать экземпляры Foo как из таблицы, так и из представления?Мне также нужно получить экземпляры Bar, на которые есть ссылки.

1 Ответ

0 голосов
/ 25 апреля 2018

Даже если бы это было возможно, я думаю, что это не очень хорошая идея читать таким образом.В принципе сущность является информационной единицей.Таблица - это постоянство сущности для хранения данных, когда сущность исчезает из памяти.

JPA может хранить одну сущность в более чем одной таблице, но это не та идея, которая вам нужна.Это скорее для отдельных индексов, больших данных, производительности и т. Д.

Я предлагаю создать класс проекции (представляющий представление) с теми же полями, что и Foo, и создать вторую, доступную только для чтения сущность для загрузки данных из представления.После этого вы можете создать функцию отображения для отображения данных из таблицы и / или представления.

...