Tengo una consulta con nombre muy simple que solía funcionar antes de la actualización, pero ahora obtengo un error de tiempo de ejecución.

Esta es la consulta nombrada:

@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes", query="FROM NodeType")
public class NodeType {
...

La excepción que veo:

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
0
josh_boaz 26 ene. 2016 a las 01:49

3 respuestas

La mejor respuesta

¿Está declarando su propio SessionFactory para Hibernate? No recuerdo cómo funciona Hibernate con Spring.

Pero si tiene una configuración de hibernación, es posible que tenga líneas como esta:

<mapping class="com.example.NodeType" />

Esto se elimina en Hibernate 5. En su lugar, debe declarar sus entidades en el código al construir SessionFactory. Por ejemplo:

        StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
            .configure()
            .build();

        Metadata metadata = new MetadataSources(standardRegistry)
            .addAnnotatedClass(NodeType.class)
            .getMetadataBuilder()
            .applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
            .build();

        sessionFactory = metadata
            .getSessionFactoryBuilder()
            .build();

Ver más: http: // docs .jboss.org / hibernate / orm / 5.0 / userGuide / en-US / html_single / # bootstrap-native-sessionfactory

Tal vez haya algún constructor SessionFactory para Spring que ahora tenga que configurar de manera similar. Si es así, publique su nueva configuración para otros.

Espero que esto ayude.

0
Radzikowski 8 feb. 2016 a las 15:13

¿Intentaste esto?

@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes",query="SELECT n FROM NodeType n")
0
Thibault Clement 26 ene. 2016 a las 06:30

Deberías usar algo como esto:

@Entity
@Table(name="FRA_HIER_NODE_TYPE", schema="FRA_DATA")
@NamedQuery(name="NodeType.FetchNodeTypes",query="SELECT * FROM NodeType") 

Espero que esto ayude.

0
jmj 25 ene. 2016 a las 22:55