私はHibernateとSpringの初心者です。私の質問は、「基準を追加する方法…」という状況で、2つの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)Language.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)Topic.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>
そして、このメソッドを使用してデータベース内のすべてのlangを取得し、正しく機能します。
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();
}