用hibernate保存数据时有一项没值

来源:百度知道 编辑:UC知道 时间:2024/09/20 09:27:44
问题是我用SSH三个框架 集成使用时 在一个表中插入数据时 有一列没值
我调试时 那个字段里是有值的 他也发了sql语句为Hibernate: insert into answer (qid, quesans, userid, grade, anstime, status) values (?, ?, ?, ?, ?, ?) 还有一个aid是主键自动生成
这是配置的映射关系
<class name="Answer" table="answer">
<id name="aid" type="java.lang.Integer">
<column name="aid" />
<generator class="identity" />
</id>

<many-to-one name="question" class="Question"
fetch="select">
<column name="qid" />
</many-to-one>

<property name="quesans" type="java.lang.String">
<column name="quesans" length="50" />
</property>
<property name="userid" type="java.

Question这个对象没有持久化.
我想你是下面这么操作的.
Answer a = new Answer();
a.setAid(...);
...a.setStatus(...);
Question q = new Question();
q.setQid(1);
a.setQuestion(q);
这样是不可以的.你应该先持久化这个Question
然后再a.setQuestion(q);
也就是说需要改成这样...
Answer a = new Answer();
a.setAid(...);
...a.setStatus(...);
Question q = dao.get(1);
a.setQuestion(q);
逻辑是这样的,试试看.

既然用hibernate建议还是通过对象来进行保存吧,用session.save(object)来做,
得到MANY-TO-ONE 的Question实例直接保存进去