更新到 hibernate 5.0.7 和 jpa 2.1 后 hibernate 命名查询错误
hibernate named query error after updating to hibernate 5.0.7 and jpa 2.1
我有一个非常简单的命名查询,用于在更新之前工作,但现在我遇到了运行时错误。
这是命名查询:
@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes", query="FROM NodeType")
public class NodeType {
...
我看到的异常:
Caused by: org.hibernate.HibernateException: Errors in named queries: NodeType.FetchNodeTypes
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:493)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:416)
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:401)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 25 more
你应该使用这样的东西:
@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes",query="SELECT * FROM NodeType")
希望对您有所帮助。
你试过这个吗:
@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes",query="SELECT n FROM NodeType n")
您要为 Hibernate 声明自己的 SessionFactory
吗?我不记得 Hibernate 如何与 Spring.
一起工作
但是如果你有休眠配置,你可能会有这样的行:
<mapping class="com.example.NodeType" />
这已在 Hibernate 5 中删除。相反,您必须在构建 SessionFactory
时在代码中声明您的实体。例如:
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
.configure()
.build();
Metadata metadata = new MetadataSources(standardRegistry)
.addAnnotatedClass(NodeType.class)
.getMetadataBuilder()
.applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
.build();
sessionFactory = metadata
.getSessionFactoryBuilder()
.build();
查看更多:http://docs.jboss.org/hibernate/orm/5.0/userGuide/en-US/html_single/#bootstrap-native-sessionfactory
也许 Spring 有一些 SessionFactory 构建器,您现在必须对其进行类似的配置。如果是这样,请post你的新配置给其他人。
希望这对您有所帮助。
我有一个非常简单的命名查询,用于在更新之前工作,但现在我遇到了运行时错误。
这是命名查询:
@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes", query="FROM NodeType")
public class NodeType {
...
我看到的异常:
Caused by: org.hibernate.HibernateException: Errors in named queries: NodeType.FetchNodeTypes
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:493)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:416)
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:401)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 25 more
你应该使用这样的东西:
@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes",query="SELECT * FROM NodeType")
希望对您有所帮助。
你试过这个吗:
@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes",query="SELECT n FROM NodeType n")
您要为 Hibernate 声明自己的 SessionFactory
吗?我不记得 Hibernate 如何与 Spring.
但是如果你有休眠配置,你可能会有这样的行:
<mapping class="com.example.NodeType" />
这已在 Hibernate 5 中删除。相反,您必须在构建 SessionFactory
时在代码中声明您的实体。例如:
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
.configure()
.build();
Metadata metadata = new MetadataSources(standardRegistry)
.addAnnotatedClass(NodeType.class)
.getMetadataBuilder()
.applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
.build();
sessionFactory = metadata
.getSessionFactoryBuilder()
.build();
查看更多:http://docs.jboss.org/hibernate/orm/5.0/userGuide/en-US/html_single/#bootstrap-native-sessionfactory
也许 Spring 有一些 SessionFactory 构建器,您现在必须对其进行类似的配置。如果是这样,请post你的新配置给其他人。
希望这对您有所帮助。