JPA загружает объекты с именованными запросами - PullRequest
1 голос
/ 07 февраля 2012

У меня есть объект JPA под названием Customer.java:

@NamedQueries({@NamedQuery(name="getAccountWithCheckRangeByService", 
query="SELECT c FROM Customer"})
public Long Id;
public Address address;
//getter and setter
}

Теперь, если я вызову именованный запрос и загрузлю объект Custoemr. и затем, если я сделаю c.getAddress (), получу ли я загруженный адрес? Или мне нужно написать отдельный именованный запрос для загрузки адреса

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Вы, вероятно, имеете в виду SELECT c FROM Customer c.

Если вы хотите убедиться, что адрес загружен, вы можете использовать извлекать соединения .

SELECT c FROM Customer c JOIN FETCH c.address

0 голосов
/ 07 февраля 2012

Попробуйте - посмотрите, что получится. Если адрес - это отдельная сущность, тогда да, он загрузит все зависимые сущности - в этом случае вы не аннотировали, каковы отношения между клиентом и адресом, но я предполагаю, что вы это не указали. Вы можете заставить его выполнять ленивую загрузку реляционной аннотации, например, @OneToMany (fetch = FetchType.LAZY). Если адрес - это просто столбец внутри Customer, тогда да, он загрузит его, хотя ваш синтаксис JPQL немного странный - я бы сделал «SELECT c FROM Customer c». Не уверен, что ваш именованный запрос будет работать, но он должен работать, если вы его опробовали.

...