【发布时间】:2012-12-10 09:17:59
【问题描述】:
我是 Hibernate 和 Spring 的新手。我的问题是关于“如何添加标准……”在这种情况下,我有两个 bean:
1) 语言:
public class Language {
private int languageId;
private String languageName;
private List<Topic> listOfAllTopics;
}
2) 主题:
public class Topic {
private int topicId;
private String topicName;
}
我的数据库表:
1) 语言
language_id int(PK)
language_name varchar(30)
2) 主题
topic_id int(PK)
topic_name varchar(30)
language_id int(FK)
Hibernate 映射 xml 文件有:
1) 语言.hbm.xml
<hibernate-mapping package="com.mw.javamentordb.dto">
<class name="Language" table="language" lazy="true">
<id name="languageId" column="language_id" type="int">
<generator class="increment" />
</id>
<property name="languageName" column="language_name"type="string"/>
<bag name="listOfAllTopics" cascade="all">
<key column="language_id" not-null="true" />
<one-to-many class="Topic"/>
</bag>
</class>
</hibernate-mapping>
2) 主题.hbm.xml
<hibernate-mapping package="com.mw.javamentordb.dto">
<class name="Topic" table="topics" lazy="true">
<id name="topicId" column="topics_id" type="int">
<generator class="increment" />
</id>
<property name="topicName" column="topics_name" type="string" />
</class>
</hibernate-mapping>
我使用这种方法在我的数据库中获取了所有语言,并且它工作正常。
public List<Language> getAllLanguages() {
Criteria criteria = getSession().createCriteria(Language.class);
return criteria.list();
}
但是当我尝试使用标准获取特定语言的所有主题(通过 langId)时,它不起作用。 其实我不知道在这种情况下如何使用标准..
public List<Topic> getAllTopicOfLanguage(Language language) {
Criteria criteria = getSession().createCriteria(Topic.class);
criteria.add(Restrictions.eq("?");
return criteria.list();
}
【问题讨论】:
标签: spring hibernate jakarta-ee hibernate-mapping hibernate-criteria