Я хочу ленивую загрузку свойств @Lob.
Во-первых, я использую javassist для инструментов своего класса, как описано здесь http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-fetching-lazyproperties:
Код:
Мой класс содержит свойства "summary" и "title", такие как Lob и другие свойства.
Код:
public class News extends BaseEntity{
.
.
.
@Lob
@Basic(fetch = FetchType.LAZY)
public String getSummary() {
return summary;
}</p>
<p>@Lob
@Basic(fetch = FetchType.LAZY)
public String getTitle() {
return title;
}</p>
<pre><code>@Temporal(TemporalType.TIMESTAMP)
public Date getPublishDate() {
return publishDate;
}
.
,
,
}
Сначала я загружаю одну новость из базы данных и хочу получить дату публикации (я пишу свои коды ниже)
Код:
<code>
newsDAO.findByid(1L).getPublishDate();
и метод findByid:
<code>
Code:
public News findById(Long id) throws ServiceException {
News entity = em.getReference(entityClass, id);
return entity;
}
затем hibernate генерирует этот запрос:
Код:
<code>
Hibernate:
select
news0_.id as id1_,
news0_.entityVersion as entityVe2_1_,
news0_.publishDate as publish15_1_,
news0_.url as url1_
from
News news0_
where
news_.id=?
Этот запрос показывает, что он не извлекает свойство Lob и, к счастью, ленивая загрузка свойств Lob работает хорошо.
Но когда я загружаю только "краткое" свойство новостей
Код:
<code>
newsDAO.findByid(1L).getSummary();
затем hibernate генерирует эти запросы:
Код:
<code>
Hibernate:
select
news0_.id as id1_,
news0_.entityVersion as entityVe2_1_,
news0_.publishDate as publish15_1_,
news0_.url as url1_
from
News news0_
Hibernate:
select
news_.summary as summary1_,
news_.title as title1_
from
News news_
where
news_.id=?
У меня есть два вопроса:
1. Я только хочу получить свойство "summary", а не свойство "title", но запрос гибернации показывает, что он также получает свойство "title". Почему это происходит?
2. Почему hibernate генерирует два запроса для получения только сводных свойств новостей?
Буду признателен, если кто-нибудь поможет мне.
Хосро.