Переходное поле в JPA и настройка из запроса

Как мы можем загружать временные поля в JPA из выбранных запросов.

Например, у меня есть этот запрос:

SELECT table1.*, (SELECT SUM(field) from table2 WHERE theField=table1.flag) as total FROM table1;

Итак, здесь мне нужно временное поле под названием «всего» в моем компоненте.

Но кажется, что это невозможно в JPA


person Nav    schedule 20.12.2013    source источник


Ответы (1)


Вы можете использовать constructor в JPQL

Запрос:

SELECT NEW com.foo.entities.Table1(table1.*, (SELECT SUM(field) from table2 WHERE theField=table1.flag) as total) FROM table1;

Объект:

@Entity
public class Table1{

// .. other columns

@Transient
int total;

// table1Field1,table1Field2 etc. map to your table1.* coulmns
public Table1(String table1Field1,int table1Field2,int total){

// ..other assignments here

this.total = total; // transient assignment here

}


}
person Niks    schedule 20.12.2013
comment
представьте, что у нас есть сто бинов с 40 полями для каждого, обслуживание нас убьет :( - person Nav; 20.12.2013
comment
а что будет если написать нативный sql в этом случае? - person Nav; 20.12.2013
comment
Кажется, решение переключается на MyBatis;) - person Nav; 22.12.2013
comment
как добиться этого в весенних данных jpa, используя спецификацию API? - person Saqib Javed; 04.02.2020