SSH 整合后 Hibernate save方法没有发出insert语句, 只有select xx.nextval ?
3个正在一起 怎么这么怪异啊。
自己弄了很多次都不行, 最后干脆copy同学的,还是不行, 他的就OK 。
applicationContext.xml====================================================
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="userDAO" class="dao.impl.UserDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="UserAction" class="actions.UserAction">
<property name="userDAO" ref="userDAO"></property>
</bean>
UserDAO==============================================================
public class UserDAO implements GeneralDAO {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void addUser(Object obj) {
this.sessionFactory.openSession().save(obj);
// 事物好像都交给Spring管理了 这里不用自己再写提交吧? 更何况最大的问题是没有insert语句输出?
System.out.println("----ok----");
}
}
GenerateDAO=============================================
public interface GeneralDAO {
public void addUser(Object obj);
}
UserAction=============================================
public String addUser(){
System.out.println(user.getUsername()); //取值都很正常
System.out.println(user.getPassword());
userDAO.addUser(user);
return SUCCESS;
}
//hibernate 设置show_sql 发现 只有一条语句 select hibernate_sequence.nextval from dual
insert跑哪里去了啊?
是hibernte.cfg.xml的问题?(老师教的SSH配好后还有hibernate.cfg.xml? 我看到别人的SSH好像没有hibernate.cfg.xml)
Hibernate中的配置=======================================================
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:orcl
</property>
<property name="connection.username">user1</property>
<property name="connection.password">a123</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">orcl</property>
<property name="show_sql">true</property>
<mapping resource="pojos/TbUser.hbm.xml" />
</session-factory>
还能是哪里有错误啊?? 找了好久, 网上搜搜, 我这个问题好像很弱智啊,似乎没人是像我这样的问题呢。
5 个解决方案
#1
人品问题吧!呵呵
#2
UserDAO extends HibernateDaoSupport 实现这个类
public boolean add(Object o){
try{
super.getHibernateTemplate().save(o);
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
这样试试看!
至于 hibernate.cfg.xml 这个文件 可以有也可以没有 如果没的话 所有信息写到spring配置文件里
有的话 在spring里引入这个文件
show_sql 上面再加一句
<property name="connection.autocommit">true</property>
public boolean add(Object o){
try{
super.getHibernateTemplate().save(o);
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
这样试试看!
至于 hibernate.cfg.xml 这个文件 可以有也可以没有 如果没的话 所有信息写到spring配置文件里
有的话 在spring里引入这个文件
show_sql 上面再加一句
<property name="connection.autocommit">true</property>
#3
研究配置文件
#4
我发现了, 我的事务管理配置有问题
#5
我忘记加上这句话了
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
#1
人品问题吧!呵呵
#2
UserDAO extends HibernateDaoSupport 实现这个类
public boolean add(Object o){
try{
super.getHibernateTemplate().save(o);
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
这样试试看!
至于 hibernate.cfg.xml 这个文件 可以有也可以没有 如果没的话 所有信息写到spring配置文件里
有的话 在spring里引入这个文件
show_sql 上面再加一句
<property name="connection.autocommit">true</property>
public boolean add(Object o){
try{
super.getHibernateTemplate().save(o);
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
这样试试看!
至于 hibernate.cfg.xml 这个文件 可以有也可以没有 如果没的话 所有信息写到spring配置文件里
有的话 在spring里引入这个文件
show_sql 上面再加一句
<property name="connection.autocommit">true</property>
#3
研究配置文件
#4
我发现了, 我的事务管理配置有问题
#5
我忘记加上这句话了
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />