Обогатите JPA-сущность неуправляемым ПОЖО - PullRequest
0 голосов
/ 28 августа 2018

У меня есть ситуация, когда у меня есть несколько таблиц в схеме, поддерживаемой проектом, в котором я нахожусь. Эти таблицы имеют соответствующие сопоставленные сущности jpa.

Однако я хочу обогатить одну из сущностей парой полей из другой схемы. Я думал, что для этого можно использовать пользовательский выбор SQL, но я не могу понять, как это сделать.

Обогащенные данные предназначены только для отображения и не должны обновляться.

Я играл с @Subselect, @NamedNativeQuery и @Loader, но безуспешно. Очень упрощенный код ниже.

@Entity
@Table(name = "MY_TABLE")
public class MyTableEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XXX_SEQ_GEN")
    @SequenceGenerator(name = "XXX_SEQ_GEN", sequenceName = "XXX_SEQ", allocationSize = 1)
    private Integer id;

    ... some properties


    private MyPojo myPojo;

    public MyPojo getMyPojo() {
        return myPojo;
    }

    public void setMyPojo(MyPojo myPojo) {
        this.myPojo = myPojo;
    }
}

public class MyPojo {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}

Hibernate - это реализация jpa.

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать @Formula для извлечения полей только для чтения из другой схемы по одному.

@Formula(value="(SELECT t.extra_data1 FROM other_schema.other_table t WHERE t.id = id)")
@Basic(fetch=FetchType.EAGER)
public Integer getExtraDataColumn1() {
   return this.extraDataColumn1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...