【发布时间】:2009-11-01 16:17:00
【问题描述】:
我正在尝试使用注释将 Spring 与 Hibernate 结合起来,但出现以下错误:
org.springframework.orm.hibernate3.HibernateSystemException : Unknown entity: entities.Bar; nested exception is org.hibernate.MappingException: Unknown entity: entities.Bar
这是我的设置...
我的实体:
package entities;
@Entity
public class Bar implements Serializable
{
...
}
我的豆子:
package blah;
@Repository
@Service("fooService")
@RemotingDestination(channels = { "my-amf" })
public class Foo
{
protected HibernateTemplate template;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory)
{
template = new HibernateTemplate(sessionFactory);
}
@RemotingInclude
public void addBar(String name) throws DataAccessException
{
Bar bar = new Bar();
bar.setName(name);
template.save(bar);
}
}
我在 Spring 中启用注释:
<context:annotation-config />
<context:component-scan base-package="blah" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:~/blahdb/blahdb" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>entities.Bar</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
当我通过 BlazeDS 从 Flex 应用程序调用 Foo.addBar 方法时出现错误。
我真的很想避免额外的配置,看来这一切都应该工作。
我正在使用 Spring 3.0.0.RC1、Hibernate Annotations 3.4.0、Tomcat 6.0.20 和 Java 1.6.0_15。
有什么想法吗?谢谢。
【问题讨论】:
-
看起来像一个映射异常,但您显然已经映射了
Bar,我会检查是否有任何拼写错误,然后查看您的休眠 jar 是否兼容(使用兼容性矩阵)并与 Spring 3 兼容。 -
我在 Hibernate 中成功使用了 Spring 3.0.0.RC1:Core 3.3.2.GA,Annotations 3.4.0.GA。所以他们肯定一起工作。
-
James,如果您想通过电子邮件将您项目的相关部分发送给我,我很乐意看一下并将其与我自己的工作项目进行比较,就像我说的听起来很相似。我的电子邮件地址是谷歌电子邮件服务的 concat('willie', '.', 'wheeler')... :-)