【发布时间】:2026-01-09 03:35:01
【问题描述】:
即使该操作似乎非常频繁地使用,我也没有发现我的代码中的问题出在哪里。 在 DAO 课程中,我有:
public class ItemDaoImpl extends HibernateDaoSupport implements ItemDao {
@Transactional
public void addItem(Item item){
getSessionFactory().getCurrentSession().save(item);
}
@Transactional(readOnly = true)
public List<Item> findAllItem(){
return getSessionFactory().getCurrentSession().createQuery("from Item").list();
}}
findAllItem() 效果很好,而 addItem() 则不行。当我单击调用 addItem() 的按钮时,会引发以下错误:
java.lang.ClassCastException: com.z.item.model.Item 不能转换为 java.util.Map javax.faces.el.EvaluationException: java.lang.ClassCastException: com.z.item.model.Item 不能转换为 java.util.Map 在 javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) 在 com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) 在 javax.faces.component.UICommand.broadcast(UICommand.java:311) . . .
但我没有指定任何地图,因为我到处都使用对象“项目”。传递给 addItem() 的项目对象也是正确的。为什么会抛出这个异常?
这是我的配置方式:
<hibernate-mapping>
<class entity-name="com.z.item.model.Item"
table="item">
<id name="id" type="long">
<column name="ID" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="ITEMNAME" length="45" not-null="true" />
</property>
<property name="amount" type="int">
<column name="AMOUNT" not-null="true" />
</property>
<property name="price" type="java.math.BigDecimal">
<column name="PRICE" length="10" not-null="true" />
</property>
</class>
</hibernate-mapping>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="itemDao"
class="com.z.item.dao.impl.ItemDaoImpl" >
<property name="sessionFactory" ref="sessionFactory"></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.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/z/item/hibernate/Item.hbm.xml</value>
</list>
</property>
</bean>
【问题讨论】:
-
这里有问题吗?还是我应该解决所有显示的问题..
标签: spring hibernate hibernate-mapping hsqldb spring-transactions