【发布时间】:2021-12-26 22:39:39
【问题描述】:
我正在将现有的 Spring + Hibernate 项目从以前的版本升级到最新版本。我使它一切正常,除了数据没有保存到数据库中。也没有错误。这是代码。感谢你的帮助。谢谢!
ApplicationConfiguration.xml
<bean id="providerDao" class="dao.hibernate.ProviderDAOImpl">
<property name="sessionFactory" ref="AbcSessionFactory"/>
</bean>
<bean id="ABCSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="AbcDataSource"/>
<property name="mappingResources">
<list>
<value>abc/bean/Provider.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.show_sql">${abc.showSql}</prop>
<prop key="hibernate.default_schema">${abc.dbSchema}</prop>
<prop key="hibernate.use_outer_join">true</prop>
</props>
</property>
</bean>
//数据源
<!-- DataSource setup -->
<bean id="AbcDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"><value>${abc.jndiName}</value></property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="ABCSessionFactory"/>
</bean>
DAO 调用
public class ProviderDAOImpl extends HibernateDaoSupport
implements ProviderDAO
{
private static final Log log = LogFactory.getLog(ProviderDAOImpl.class);
public void save(final Provider instance)
{
log.debug("saving Provider instance");
getHibernateTemplate().saveOrUpdate(instance);
log.debug("save successful");
}
}
【问题讨论】:
-
我已经尝试了许多其他帖子中建议的方法,但 SAVE 仍然无法正常工作。感谢你的帮助。谢谢!
-
我可以读取数据,但只有 SAVE 不起作用,而且完全没有错误。仍在努力弄清楚。非常感谢!
-
你在哪里调用 save 方法,在哪个上下文中?也许调用休眠 session.flush()
-
您是否使用
@Transactional开启了交易或将您的DAO 声明为@Repository? XML 语法现在用的不多,注解更容易使用。 -
是的,我一直在尝试所有这些注释。 @Transactional(传播=传播。需要,只读=假)。我没有使用存储库,但我会尝试一下。
标签: hibernate spring-mvc