hibernate交给Spring管理
我的任务类.hbm.xml
<class name="my.sys.xmgl.assignment.entity.AdcAssignment" table="adc_assignment">
<id name="assigId" type="java.lang.Integer">
<column name="assigId" />
<generator class="native" />
</id>
<many-to-one name="project" class="my.sys.xmgl.project.entity.AdcProjects">
<column name="project_id" />
</many-to-one>
<property name="name" type="java.lang.String">
<column name="name" length="20" />
</property>
<property name="createtime" type="java.util.Date">
<column name="createtime" length="10" />
</property>
<property name="isRelease" type="java.lang.Boolean">
<column name="isRelease" />
</property>
<property name="state" type="java.lang.String">
<column name="state" length="1" />
</property>
<property name="memo" type="java.lang.String">
<column name="memo" length="200" />
</property>
项目类.hbm.xml
<class name="my.sys.xmgl.project.entity.AdcProjects" table="adc_projects">
<id name="projectId" type="java.lang.Integer">
<column name="project_id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<property name="baseyear" type="java.lang.String">
<column name="baseyear" length="4" not-null="true" />
</property>
<property name="basemonth" type="java.lang.String">
<column name="basemonth" length="2" not-null="true" />
</property>
<property name="baseday" type="java.lang.String">
<column name="baseday" length="2" not-null="true" />
</property>
<property name="scale" type="java.util.Date">
<column name="scale" length="10"/>
</property>
<property name="createtime" type="java.util.Date">
<column name="createtime" length="10"/>
</property>
<property name="state" type="java.lang.String">
<column name="state" length="1" />
</property>
<property name="finishtime" type="java.util.Date">
<column name="finishtime" length="10"/>
</property>
<property name="isArchived" type="java.lang.Boolean">
<column name="isArchived" length="1"/>
</property>
<property name="memo" type="java.lang.String">
<column name="memo" length="200" />
</property>
<set name="adcassignments" lazy="false" cascade="save-update,delete">
<key>
<column name="project_id"/>
</key>
<one-to-many class="my.sys.xmgl.assignment.entity.AdcAssignment"/>
</set>
</class>
我在任务的添加页面有一个单选框,拿到项目的id,然后传给Action,我觉得是不是我的serviceimpl有问题。
dao层
@Override
public void saveAssignmentProjectId(AdcAssignment assignment) {
getHibernateTemplate().save(assignment);
}
service层
@Override
public void saveAssignmentProjectId(AdcAssignment assignment,Integer... projectIds) {
save(assignment);
if (projectIds != null) {
for (Integer projectId : projectIds) {
assignmentDao.saveAssignmentProjectId(new AdcAssignment(assignment.getAssigId(),new AdcProjects(projectId)));
}
}
}
运行时发现执行了2条SQL
Hibernate: insert into adc_assignment (project_id, name, createtime, isRelease, state, memo) values (?, ?, ?, ?, ?, ?)
Hibernate: insert into adc_assignment (project_id, name, createtime, isRelease, state, memo) values (?, ?, ?, ?, ?, ?)
然后因为我的属性是不能为空的,所以他报错了。如果我设置全部属性能空值时,数据库里面就保存了2条数据,一条是任务全部信息的,一条是只有任务ID和项目ID。
为什么会出现这种问题?是不是我的service层保存的方法有问题?请大神不吝赐教!谢谢大家了。