ssh3整合例子,执行添加功能正常添加;
重复添加动作表【1】正常添加,但与表【1】关联的表【2】出现异常
即表【2】添加的第二条数据会覆盖上一条数据
只能重新启动程序才能正常添加
不明白为什么求思路,如果有需要我再贴出代码,谢谢大家!
这怎么看的明白,还是得看代码
一共两个实体类:book1类,author1类,book类中添加多对一映射,映射文件如下:
Book1.hbm.xmlL:
DAO层:
// 添加信息
@Override
public void save(Book1 book) {
getHibernateTemplate().save(book);
}
Service层:
// 添加信息
@Override
public boolean save(Book1 book) {
try {
bookDAO.save(book);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
action层:
// 添加信息
public String save() throws Exception {
boolean flag = bookService.save(book);
if(flag) {
return SUCCESS;
} else {
return "false";
}
}
jsp页面:
bean_common.xml文件,存放的是hibernate连接:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="url"
value="jdbc:mysql://localhost:3306/zhizhuo">
</property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/zgx14/pojo/Book1.hbm.xml</value>
<value>com/zgx14/pojo/Author1.hbm.xml</value></list>
</property></bean>
web.xml:
day14ssh02
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:beans_*.xml
执行程序后,第一次添加正常,再次添加时,关联的author表中的第一条数据会被第二条覆盖,也就是两条数据都显示都二条的内容
Book1.hbm.xml
<hibernate-mapping>
<class name="com.zgx14.pojo.Book1" table="book1" catalog="zhizhuo">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="bookName" type="java.lang.String">
<column name="book_name" length="50" not-null="false" />
</property>
<many-to-one name="author" class="com.zgx14.pojo.Author1" lazy="false" cascade="all">
<column name="author_id"></column>
</many-to-one>
</class>
如果有明白的还请不要客气啊!!!
问题已解决,在spring的配置的action的bean中默认的类型改写成多例就可以了。