2
我使用spring,使用hibernate和Mysql db。 我有Question對象,它具有Answer對象集合。使用休眠模式以隨機順序初始化集合對象
我question.hbm.xml是
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.gamesapp.model.Question" table="question" >
<cache usage="read-write"/>
<id name="questionId" type="java.lang.Long">
<column name="question_id" />
<generator class="identity" />
</id>
<property name="description" type="java.lang.String">
<column name="description" length="500" not-null="true" />
</property>
<property name="difficultyLevel" type="java.lang.String">
<column name="difficulty_level" length="6" not-null="true" />
</property>
<property name="isMixer" type="java.lang.String">
<column name="is_mixer" length="5" not-null="true" />
</property>
<property name="status" type="java.lang.String">
<column name="status" length="7" not-null="true" />
</property>
<set name="answers" inverse="true" >
<cache usage="read-write"/>
<key>
<column name="question_id" not-null="true" />
</key>
<one-to-many class="com.gamesapp.model.Answer" />
</set>
<set name="questionAnswerUsers" inverse="true" >
<cache usage="read-write"/>
<key>
<column name="question_id" not-null="true" />
</key>
<one-to-many class="com.gamesapp.model.QuestionAnswerUser" />
</set>
</class>
</hibernate-mapping>
我answer.hbm.xml是
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.gamesapp.model.Answer" table="answer" >
<cache usage="read-write"/>
<id name="answerId" type="java.lang.Long">
<column name="answer_id" />
<generator class="identity" />
</id>
<many-to-one name="question" class="com.gamesapp.model.Question" fetch="select">
<column name="question_id" not-null="true" />
</many-to-one>
<property name="description" type="java.lang.String">
<column name="description" length="100" not-null="true" />
</property>
<property name="dragPosition" type="java.lang.Short">
<column name="drag_position" />
</property>
<property name="orderSequence" type="java.lang.Integer">
<column name="order_sequence" not-null="true" />
</property>
<property name="isAnswer" type="java.lang.String">
<column name="is_answer" length="5" not-null="true" />
</property>
<property name="askPercentage" type="java.lang.Double">
<column name="ask_percentage" not-null="true" />
</property>
<set name="questionAnswerUsers" inverse="true">
<cache usage="read-write"/>
<key>
<column name="answer_id" not-null="true" />
</key>
<one-to-many class="com.gamesapp.model.QuestionAnswerUser" />
</set>
</class>
</hibernate-mapping>
現在我的問題是,我想以隨機順序獲取問題的清單。 並且對於每個Question對象,我都希望使用Hibernate標準來渴望獲取答案集,並且答案集也應該隨機初始化。
例如說問題對象questionOne有一組回答有四個Answer object.say ans1,ans2,ans3和ans4。現在我第一次提取questionOne,答案集應該初始化爲答案= {ans1,ans2,ans3,ans4}第二次我提取question1一個對象,我應該得到答案設置爲answer = {ans4,ans2,ans3,ans1}。
問題列表應該隨機初始化。 永久問題的答案集應該使用休眠標準進行提取,每次物品都應該洗牌。
在此先感謝。
感謝您的回覆JB Nizet。但問題是,我想初始化一組答案,而不是通過使用java隨機初始化Hibernate。如果我使用上述方法,我必須在Question類中定義另一個集合。 –
這是標準。嘗試{ 的DetachedCriteria標準= DetachedCriteria.forClass(Question.class) .setFetchMode( 「回答」,FetchMode.JOIN)語句\t \t \t \t \t。新增(Restrictions.sqlRestriction(「1 = 1組由question_id爲了通過RAND() 「)) \t \t \t }趕上(RuntimeException的重新){ \t \t \t re.printStackTrace(); \t \t \t log.debug(re); \t \t \t return null; \t \t} –
如果Set不適用於此方法,請爲列表建議我。謝謝 –