Hibernate 实体类不接

Posted

技术标签:

【中文标题】Hibernate 实体类不接【英文标题】:Hibernate entity class is not picking up 【发布时间】:2012-10-26 18:20:10 【问题描述】:

我正在尝试使用带有注释的休眠。我用@Entity(确保这是javax.persistance.Entity 而不是Hibernate 的实体)和@Table 注释了我的类。

当我尝试使用

查询表时
session.createQuery("from HibernateMatchedInvoiceItem").list()

但这失败了,出现以下异常

caused by: org.hibernate.hql.ast.QuerySyntaxException: HibernateMatchedInvoiceItem is not mapped [from HibernateMatchedInvoiceItem]

我的会话工厂定义如下。

   <bean id="SessionFactory"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
      parent="AbstractSessionFactory" depends-on="AppConfigHelper">
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
     </props>
    </property>
    <property name="dataSource" ref="dataSource" />

我没有定义persistant.xml 文件。这是这个例外背后的原因吗? 我的疑问是,既然hibernate想要的一切(数据库连接和类映射)都是通过配置和注释指定的,为什么我们需要明确指定persistance.xml文件?

【问题讨论】:

您确定在您的数据库中创建了 HibernateMatchedInvoiceItem 表吗? HibernateMatchedInvoiceItem 类使用@Table(name="matched_invoices") 进行注释,并且matched_invoices 表有一些行。如果我使用简单的 jdbc 模板而不是使用休眠,这将给出结果。 【参考方案1】:

如果你使用注解,那么你必须使用 class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"

例子:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="annotatedClasses">
        <list>
            <value>package.classname</value>
        </list>
    </property>

【讨论】:

Bean 不接受 annotatedClasses 属性。原因:org.springframework.beans.NotWritablePropertyException:bean 类 [org.springframework.orm.hibernate3.LocalSessionFactoryBean] 的无效属性“annotatedClasses”:Bean 属性“annotatedClasses”不可写或具有无效的 setter 方法。 setter的参数类型和getter的返回类型是否匹配? static.springsource.org/spring/docs/2.5.x/api/org/… 你应该仔细检查你的hibernate实体是否支持java bean约定。

以上是关于Hibernate 实体类不接的主要内容,如果未能解决你的问题,请参考以下文章

EF时,数据库字段和实体类不一致问题

tk.mybatis.mapper.MapperException: 当前实体类不包含名为的属性!,500错误

Hibernate实体类编写规则

hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题

Hibernate自动生成配置文件和实体类

生成 hibernate 映射文件和实体类