Я использую Hibernate с spring.
У меня есть такой класс-модель.
@Entity
@Table(name = "forumtopic")
public final class Forumtopic extends AbstractUserTracking implements
java.io.Serializable {
/**SNIP **/
private Forumcategory forumcategory;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "FkForumcategoryId", nullable = false)
public Forumcategory getForumcategory() {
return this.forumcategory;
}
public void setForumcategory(final Forumcategory forumcategory) {
this.forumcategory = forumcategory;
}
}
В целом это работает, но Категория загружается не лениво, а быстро после загрузки ForumEntry.
Гибернация:
Выбрать
forumtopic0_.PkId как PkId19_0_,
forumtopic0_.CreateDate как CreateDate19_0_,
forumtopic0_.FkCreateUserId как FkCreate3_19_0_,
forumtopic0_.FkLastUserId как FkLastUs4_19_0_,
forumtopic0_.LastChange как LastChange19_0_,
forumtopic0_.FkForumcategoryId as FkForum10_19_0_,
forumtopic0_.PublishCategory как PublishC6_19_0_,
forumtopic0_.State как State19_0_,
forumtopic0_.Text as Text19_0_,
forumtopic0_.Topic как Topic19_0_,
forumtopic0_.FkTpUserId как FkTpUserId19_0_
от
forumtopic forumtopic0_
где
forumtopic0_.PkId =?
Спящий режим:
Выбрать
forumcateg0_.PkId как PkId17_0_,
forumcateg0_.CreateDate как CreateDate17_0_,
forumcateg0_. Имя как Имя17_0_,
forumcateg0_.FkRequestId как FkReques4_17_0_,
forumcateg0_.FkTpUserId как FkTpUserId17_0_
от
forumcategory forumcateg0_
где
forumcateg0_.PkId =?
Несмотря на то, что получатель не был вызван, ForumCategory загружается сразу после ForumTopic.
Эта проблема появляется во всех моих @ ManyToOne-ассоциациях. Однако @OneToMany загружаются лениво.
Я использую maven2 для сборки. Это мои зависимости.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>ejb3-persistence</artifactId>
<version>1.0.2.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<type>jar</type>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<type>jar</type>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>3.1.0.GA</version>
</dependency>
Кто-нибудь, пожалуйста, помогите мне понять, что происходит?