org.hibernate.hql.internal.ast.QuerySyntaxException: Tabelle ist nicht zugeordnet

89

Ich habe Beispiel Webanwendung Hibernate 4.3.5 + Derby-Datenbank 10.10.1.1+ Glassfish4.0 mit IDE NetBeans 8.0Beta.

Ich habe die nächste Ausnahme:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: CUSTOMERV is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3633)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3522)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
... 72 more 

Formular aus index.xhtml

<h:panelGrid id="panel1" columns="2" border="1"
                 cellpadding="5" cellspacing="1">
        <f:facet name="header">
            <h:outputText value="Add Customer Information"/>
        </f:facet>
        <h:outputLabel value="First Name:"/>
        <h:inputText value="#{customer.firstName}" id="fn"/>
        <h:outputLabel value="Last Name:"/>
        <h:inputText value="#{customer.lastName}" id="ln"/>
        <h:outputLabel value="Email:"/>
        <h:inputText value="#{customer.email}" id="eml"/>
        <h:outputLabel value="Date of Birth:"/>
        <h:inputText value="#{customer.sd}" id="s"/>
        <f:facet name="footer">
            <h:outputLabel value="#{customer.msg}" id="msg" styleClass="msg"/>
            <h:commandButton value="Save" action="#{customer.saveCustomer}">
            </h:commandButton>
        </f:facet>
    </h:panelGrid> 

Customer.java

    package com.javaknowledge.entity;

    import com.javaknowledge.dao.CustomerDao;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.persistence.*;    

    @ManagedBean
    @SessionScoped

    public class Customer implements java.io.Serializable {

    private Integer custId;
    private String firstName;
    private String lastName;
    private String email;
    private Date dob;
    private String sd, msg, selectedname;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");


    public Customer() {
    }

    public Customer(String firstName, String lastName, String email, Date dob) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.dob = dob;
    }

    public String getSd() {
        return sd;
    }

    public void setSd(String sd) {
        this.sd = sd;
    }

    public Integer getCustId() {
        return this.custId;
    }

    public void setCustId(Integer custId) {
        this.custId = custId;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    @Column(name = "EMAIL")
    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Column(name = "DOB")
    public Date getDob() {
        return this.dob;
    }

    public void setDob(Date dob) {
        this.dob = dob;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getSelectedname() {
        return selectedname;
    }

    public void setSelectedname(String selectedname) {
        this.selectedname = selectedname;
    }

    public void saveCustomer() {
        try {
            Date d = sdf.parse(sd);
            System.out.println(d);
            this.dob = d;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        CustomerDao dao = new CustomerDao();
        dao.addCustomer(this);
        this.msg = "Member Info Saved Successfull!";
        clearAll();
    }
    public void updateCustomer() {
        try {
            Date d = sdf.parse(sd);
            System.out.println(d);
            this.dob = d;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        CustomerDao dao = new CustomerDao();
        dao.updateCustomer(this);
        this.msg = "Member Info Update Successfull!";
        clearAll();
    }
    public void deleteCustomer() {
        CustomerDao dao = new CustomerDao();
        dao.deleteCustomer(custId);
        this.msg = "Member Info Delete Successfull!";
        clearAll();
    }

    public List<Customer> getAllCustomers() {
        List<Customer> users = new ArrayList<Customer>();
        CustomerDao dao = new CustomerDao();
        users = dao.getAllCustomers();
        return users;
    }

    public void fullInfo() {
        CustomerDao dao = new CustomerDao();
        List<Customer> lc = dao.getCustomerById(selectedname);
        System.out.println(lc.get(0).firstName);
        this.custId = lc.get(0).custId;
        this.firstName = lc.get(0).firstName;
        this.lastName = lc.get(0).lastName;
        this.email = lc.get(0).email;
        this.dob = lc.get(0).dob;
        this.sd = sdf.format(dob);
    }

    private void clearAll() {
        this.firstName = "";
        this.lastName = "";
        this.sd = "";
        this.email = "";
        this.custId=0;
    }

   }

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
    <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
    <property name="hibernate.connection.url">jdbc:derby://localhost:1527/derbyDB</property>
    <property name="hibernate.connection.username">user1</property>
    <property name="hibernate.connection.password">user1</property>
    <property name="hibernate.hbm2ddl.auto">create</property>

    <property name="c3p0.min_size">1</property>
    <property name="c3p0.max_size">5</property>
    <property name="c3p0.timeout">300</property>
    <property name="c3p0.max_statements">50</property>
    <property name="c3p0.idle_test_period">300</property>

    <mapping class="com.javaknowledge.entity.Customer" resource="com/javaknowledge/entity/Customer.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

Customer.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.javaknowledge.entity.Customer" table="CUSTOMERV" schema="APP">
        <id name="custId" type="java.lang.Integer">
            <column name="cust_id" />
            <generator class="increment" />
        </id>
        <property name="firstName" type="string">
            <column name="first_name" length="45" not-null="true" />
        </property>
        <property name="lastName" type="string">
            <column name="last_name" length="45" not-null="true" />
        </property>
        <property name="email" type="string">
            <column name="email" length="45" not-null="true" />
        </property>
        <property name="dob" type="date">
            <column name="dob" length="10" not-null="true" />
        </property>
   </class>
</hibernate-mapping>
Vlad Dobrydin
quelle

Antworten:

117

Endlich habe ich einen Fehler gefunden! Hoffe das ist nützlich für jemanden. Wenn Sie eine Anfrage an die Datenbank stellen (in meinem Fall Apache Derby), muss der Name der Basis den ersten Buchstaben in Großbuchstaben und den anderen in Kleinbuchstaben schreiben.

Dies ist eine falsche Abfrage:

session.createQuery("select first_name from CUSTOMERV").

Dies ist eine gültige Abfrage

session.createQuery("select first_name from Customerv"). 

Und die Klassenentität muss den gleichen Namen wie die Datenbank haben, aber ich bin mir nicht sicher.

Vlad Dobrydin
quelle
43
Das ist vielleicht nicht der Grund. Wählen Sie c aus Kunde c aus. Dies ist eine gute Abfrage, da Kunde Ihr Klassenname ist und wir den Klassennamen in die Abfrage schreiben sollten, nicht den Tabellennamen. Außerdem haben Sie in Ihrer Datei hibernate.cfg.xml sowohl <Zuordnungsressource als auch Klasse> nur einen angegeben wäre in Ordnung. Bitte überprüfen Sie dies.
Shoaib Chikate
Danke für den Rat Shoalib Chikate!
Vlad Dobrydin
Bitte führen Sie auf stackoverflow.com/questions/35657292/…
Pra_A
4
Großartig, das einzige, was für mich funktioniert hat, war, nur den gut formatierten Klassennamen anstelle des Datenbank-Tabellennamens selbst zu verwenden. Ich denke, Hibernate erfordert dies, um eine ordnungsgemäße Zuordnung durchführen zu können. Es ist ein wenig verwirrend und nicht die übliche Art wie bei JDBC, aber ich hoffe, dass zukünftige Versionen versuchen, dieses Problem zu lösen. Es wäre ein Plus, für einige dieser Abfragemechanismen einen gewissen Stil von JDBC beizubehalten.
Larrytech
2
Vielen Dank. Es hat bei mir funktioniert. Tatsächlich wird der Entitäts- / Klassenname und nicht der Tabellenname verwendet. Beispiel: Wenn Ihr Tabellenname CUSTOMER und Ihr Entitätsname Customer lautet, wird Customer in die Abfrage aufgenommen, da es sich um eine HQL-Abfrage handelt.
Terry
48

Schreiben Sie in der HQL- Abfrage nicht den Tabellennamen , sondern den Namen Ihrer Entitätsklasse in Ihre Abfrage wie

String s = "from Entity_class name";
query qry = session.createUqery(s);
Sanjeev Kumar
quelle
Du hast meine Zeit und mein Leben gerettet (*> *)
Ved Prakash
16

In meinem Fall habe ich nur vergessen hinzuzufügen nativeQuery = true

@Query( value = "some sql query ...", nativeQuery = true)

Für Spring Boot mit Spring Data JPA

ITisha
quelle
1
Vielen Dank! das gleiche passierte jetzt mit mir :)
essayoub
12

Die Datei hibernate.cfg.xml sollte die Zuordnung für die folgenden Tabellen haben. Überprüfen Sie, ob es in Ihrer Datei fehlt.

......
<hibernate-configuration>
......
......
  <session-factory>
......
<mapping class="com.test.bean.dbBean.testTableHibernate"/>
......
 </session-factory>

</hibernate-configuration>
.....
Barani r
quelle
1
Dies war bei mir der Fall, als ich die Implementierung so änderte, dass sie mit Oracle DB anstelle von Derby funktioniert. Bei Derby war es aus irgendeinem Grund nicht erforderlich, Entitäten in persistence.xml zu deklarieren (dies erschien mir logisch, da Entitäten bereits mit Anmerkungen versehen waren) (möglicherweise) das war wegen eines älteren Treibers (ojdbc6))
hallo_earth
9

Wenn Sie die JPA-Annotationen zum Erstellen der Entitäten verwenden und dann sicherstellen, dass der Tabellenname zusammen mit der @ Table-Annotation anstelle von @Entity zugeordnet wird.

Falsch zugeordnet:

@Entity(name="DB_TABLE_NAME")
public class DbTableName implements Serializable {
   ....
   ....
}

Richtig zugeordnetes Objekt:

@Entity
@Table(name="DB_TABLE_NAME")
public class DbTableName implements Serializable {
   ....
   ....
}
Cjo
quelle
3
Danke dir! Das war genau meine Version dieses Problems.
Martin McCallion
1
Danke Sehr hilfreich. Anderen weiter helfen
Mukesh Krishna
4

Vielleicht wird dies klarer und macht natürlich auch Sinn.

@Entity
@Table(name = "users")

/**
 * 
 * @author Ram Srinvasan
 * Use class name in NamedQuery
 * Use table name in NamedNativeQuery
 */
@NamedQueries({ @NamedQuery(name = "findUserByName", query = "from User u where u.name= :name") })

@NamedNativeQueries({ @NamedNativeQuery(name = "findUserByNameNativeSQL", query = "select * from users u where u.name= :name", resultClass = User.class) })
public class User implements Principal {
...
}
Connectoram
quelle
3

Es gibt noch eine Chance, diese Ausnahme zu erhalten, selbst wenn wir den Klassennamen verwendet haben, dh wenn wir zwei Klassen mit demselben Namen in verschiedenen Paketen haben. Wir werden dieses Problem bekommen.

Ich denke, der Ruhezustand kann zu Mehrdeutigkeiten führen und diese Ausnahme auslösen. Daher besteht die Lösung darin, einen vollständig qualifizierten Namen zu verwenden (wie com.test.Customerv ).

Ich habe diese Antwort hinzugefügt, die im Szenario helfen wird, wie ich bereits erwähnt habe. Ich habe das gleiche Szenario für einige Zeit stecken.

Siva Kumar
quelle
3

Keine der anderen Lösungen hat bei mir funktioniert.

Auch wenn ich seine die beste Praxis nicht denken, musste ich es in den Code hinzufügen , wie diese

configuration.addAnnotatedClass(com.myOrg.entities.Person.class);

Hier

public static SessionFactory getSessionFactory() {
    Configuration configuration = new Configuration().configure();

    configuration.addAnnotatedClass(com.myOrg.entities.Person.class);

    StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
            .applySettings(configuration.getProperties());
    SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());
    return sessionFactory;
}
Pipo
quelle
3

Auch ich hatte ein ähnliches Problem, als ich anfing, an Hibernate zu arbeiten. Alles in allem kann ich sagen, dass in der createQuery der Name der Entitätsklasse übergeben werden muss, nicht der Tabellenname, dem die Entität zugeordnet ist.

raj240
quelle
2

Dies bedeutet, dass Ihre Tabelle nicht der JPA zugeordnet ist. Entweder ist der Name der Tabelle falsch (möglicherweise wird zwischen Groß- und Kleinschreibung unterschieden), oder Sie müssen einen Eintrag in die XML-Datei einfügen.

Viel Spaß beim Codieren :)

Debiprasad Behera
quelle
in welcher xml datei?
Subrahmanyam Janapamula
2

Andere Personen, die Zuordnungsklassen für den Ruhezustand verwenden, stellen sicher, dass sie im folgenden Teil korrekt an das Modellpaket in der sessionFactoryBean-Deklaration adressiert haben :

<property name="packagesToScan" value="com.mblog.model"></property>
Majid
quelle
Ich hatte dieses Problem mit Micronaut, als ich vergaß, packages-to-scanmeine application.ymlKonfigurationsdatei zu ändern .
Ibrahim.H
1

Wenn Sie Java zufällig für die Konfiguration verwenden, müssen Sie möglicherweise die folgende beanDeklaration überprüfen, wenn Sie Änderungen auf Paketebene haben. ZB: com.abc.springPaket geändert incom.bbc.spring

@Bean
    public SessionFactory sessionFactory() {

        LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource());
        //builder.scanPackages("com.abc.spring");    //Comment this line as this package no longer valid.
        builder.scanPackages("com.bbc.spring");
        builder.addProperties(getHibernationProperties());

        return builder.buildSessionFactory();
    }
bemannt
quelle
0

Problem wurde teilweise gelöst. Neben dem Erstellen von jdbc / resource (DB Derby) musste der JDBC-Verbindungspool für die db-Ressource in der Glassfish-Administratorkonsole erstellt und beim Ping überprüft werden. Jetzt funktionieren alle CRUD-Operationen einwandfrei. Ich überprüfe, Objekt Kunde in Datenbank ordnungsgemäß hinzufügen, aktualisiere und lösche auch. Im Ausgabeprotokoll von Glassfish gilt jedoch dieselbe Ausnahme:

SEVERE:   org.hibernate.hql.internal.ast.QuerySyntaxException: CUSTOMERV is not mapped [select concat(first_name, ' ', last_name) as name from CUSTOMERV]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
    .......

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: CUSTOMERV is not mapped
    at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
    at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
Vlad Dobrydin
quelle
1
Schlagen Sie vor, eine neue Frage zu öffnen ... dies ist keine Antwort auf die erste Frage ... oder erweitern Sie Ihre erste Frage mit dem Schlüsselwort "Aktualisieren"
Pipo
0

Sollte den Entitätsklassennamen für die em.createQuery-Methode verwenden oder sollte die em.createNativeQuery-Methode für native Abfragen ohne Entitätsklasse verwenden

Mit Entitätsklasse:

em.createQuery ("Vorname aus CUSTOMERV auswählen")

Ohne Entitätsklasse oder native Abfrage:

em.createNativeQuery ("Wählen Sie c.first_name aus CUSTOMERV c")

Radhakrishnan
quelle
0

In meinem Fall: Spring Boot 2, mehrere Datenquellen (Standard und benutzerdefiniert). entityManager.createQueryschief gehen: 'Entität ist nicht zugeordnet'

Beim Debuggen stelle ich fest, dass der unitName des entityManager falsch ist (sollte benutzerdefiniert sein, aber die Tatsache ist Standard).

@PersistenceContext(unitName = "customer1") // !important, 
private EntityManager em;

Das customer1ist aus der zweiten Datenquellen-Konfigurationsklasse:

@Bean(name = "customer1EntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
        @Qualifier("customer1DataSource") DataSource dataSource) {
    return builder.dataSource(dataSource).packages("com.xxx.customer1Datasource.model")
            .persistenceUnit("customer1")
            // PersistenceUnit injects an EntityManagerFactory, and PersistenceContext
            // injects an EntityManager.
            // It's generally better to use PersistenceContext unless you really need to
            // manage the EntityManager lifecycle manually.
            // 【4】
            .properties(jpaProperties.getHibernateProperties(new HibernateSettings())).build();
}

Dann ist der entityManager richtig.

Em.persist (Entität) funktioniert jedoch nicht und die Transaktion funktioniert nicht.

Ein weiterer wichtiger Punkt ist:

@Transactional("customer1TransactionManager") // !important
public Trade findNewestByJdpModified() {
    //test persist,working right!
    Trade t = new Trade();
    em.persist(t);
    log.info("t.id" + t.getSysTradeId());

    //test transactional, working right!
    int a = 3/0;
}

customer1TransactionManager stammt aus der zweiten Datenquellen-Konfigurationsklasse:

@Bean(name = "customer1TransactionManager")
public PlatformTransactionManager transactionManager(
        @Qualifier("customer1EntityManagerFactory") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
}

Die gesamte zweite Datenquellen-Konfigurationsklasse lautet:

package com.lichendt.shops.sync;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "customer1EntityManagerFactory", transactionManagerRef = "customer1TransactionManager",
        // 【1】这里写的是DAO层的路径 ,如果你的DAO放在 com.xx.DAO下面,则这里写成 com.xx.DAO
        basePackages = { "com.lichendt.customer1Datasource.dao" })
public class Custom1DBConfig {

    @Autowired
    private JpaProperties jpaProperties;

    @Bean(name = "customer1DatasourceProperties")
    @Qualifier("customer1DatasourceProperties")
    @ConfigurationProperties(prefix = "customer1.datasource")
    public DataSourceProperties customer1DataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean(name = "customer1DataSource")
    @Qualifier("customer1DatasourceProperties")
    @ConfigurationProperties(prefix = "customer1.datasource") //
    // 【2】datasource配置的前缀,对应上面 【mysql的yaml配置】
    public DataSource dataSource() {
        // return DataSourceBuilder.create().build();
        return customer1DataSourceProperties().initializeDataSourceBuilder().build();
    }

    @Bean(name = "customer1EntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
            @Qualifier("customer1DataSource") DataSource dataSource) {
        return builder.dataSource(dataSource).packages("com.lichendt.customer1Datasource.model") // 【3】这里是实体类的包路径
                .persistenceUnit("customer1")
                // PersistenceUnit injects an EntityManagerFactory, and PersistenceContext
                // injects an EntityManager.
                // It's generally better to use PersistenceContext unless you really need to
                // manage the EntityManager lifecycle manually.
                // 【4】
                .properties(jpaProperties.getHibernateProperties(new HibernateSettings())).build();
    }

    @Bean(name = "customer1TransactionManager")
    public PlatformTransactionManager transactionManager(
            @Qualifier("customer1EntityManagerFactory") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }
}
hatanooh
quelle
zeigt, wie man mehrere Datenquellen mit Springboot 2
konfiguriert
0

Verwenden Sie in Apache Derby DB keine Tabellennamen als "Benutzer", da diese in Apache Derby reservierte Schlüsselwörter sind, in MySql jedoch einwandfrei funktionieren.

In der Abfrage müssen Sie den Namen der Entitätsklasse, von der Sie die Daten abrufen möchten, in der FROM-Klausel der Abfrage angeben.

List<User> users=session.createQuery("from User").list();

Hier ist Benutzer der Name meiner Java-Entitätsklasse (Betrachten Sie die Schreibweise des Namens, wie es in Java wichtig ist.)

Kshitiz Bathwal
quelle
0

Eine andere Lösung, die funktioniert hat:

Das Datenzugriffsobjekt, das diese Ausnahme tatsächlich ausgelöst hat, ist

public List<Foo> findAll() {
    return sessionFactory.getCurrentSession().createQuery("from foo").list();
}

Der Fehler, den ich im obigen Snippet gemacht habe, ist, dass ich den Tabellennamen foo in createQuery verwendet habe. Stattdessen muss ich Foo verwenden, den tatsächlichen Klassennamen.

public List<Foo> findAll() {
    return sessionFactory.getCurrentSession().createQuery("from Foo").list();

Dank dieses Blogs: https://www.arundhaj.com/blog/querysyntaxexception-not-mapped.html

Barani r
quelle
0

Andere Personen, die Zuordnungsklassen für den Ruhezustand verwenden, stellen sicher, dass sie das Modellpaket in der sessionFactory-Bean-Deklaration im folgenden Teil korrekt adressiert haben:

public List<Book> list() {
    List<Book> list=SessionFactory.getCurrentSession().createQuery("from book").list();
    return list;
}

Der Fehler, den ich im obigen Snippet gemacht habe, ist, dass ich den Tabellennamen foo in createQuery verwendet habe. Stattdessen muss ich Foo verwenden, den tatsächlichen Klassennamen.

public List<Book> list() {                                                                               
    List<Book> list=SessionFactory.getCurrentSession().createQuery("from Book").list();
    return list;
}
Madhusanka Edirimanna
quelle