org.hibernate.hql.internal.ast.QuerySyntaxException: tabel tidak dipetakan

98

Saya punya contoh aplikasi web Hibernate 4.3.5 + database Derby 10.10.1.1+ Glassfish4.0 dengan IDE NetBeans 8.0Beta.

Saya memiliki pengecualian berikutnya:

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 

Formulir dari 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
sumber

Jawaban:

122

Akhirnya saya menemukan kesalahan! Semoga ini bermanfaat bagi seseorang. Ketika melakukan request ke database (dalam kasus saya Apache Derby), nama base perlu ditulis dengan huruf pertama besar lainnya dalam huruf kecil.

Ini pertanyaan yang salah:

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

Ini adalah kueri yang valid

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

Dan entitas kelas harus memiliki nama yang sama dengan database, tapi saya tidak yakin.

Vlad Dobrydin
sumber
44
Itu mungkin bukan alasannya. Pilih c dari Pelanggan c ini adalah kueri yang bagus karena Pelanggan adalah nama kelas Anda dan kita harus menulis nama kelas di kueri bukan nama tabel. Hal lain di hibernate.cfg.xml Anda telah memberikan <sumber pemetaan dan kelas> hanya satu akan baik-baik saja. Silakan periksa dengan itu.
Shoaib Chikate
Terima kasih atas saran Shoalib Chikate!
Vlad Dobrydin
Harap
pandu
4
Hebat, satu hal yang berhasil untuk saya hanyalah menggunakan nama kelas yang diformat dengan baik daripada nama tabel database itu sendiri. Saya pikir Hibernate membutuhkan ini untuk dapat melakukan pemetaan yang tepat. Ini sedikit membingungkan dan bukan cara yang biasa seperti dengan JDBC, tapi saya harap versi yang akan datang mencoba menyukai masalah ini. Ini akan menjadi nilai tambah untuk menyimpan beberapa gaya dari JDBC untuk beberapa mekanisme kueri ini.
Akah
2
Terima kasih. Itu berhasil untuk saya. Sebenarnya dibutuhkan nama entitas / kelas bukan nama tabel. Sebagai contoh: jika nama tabel Anda adalah PELANGGAN dan nama entitas Anda adalah Pelanggan, Pelanggan akan dimasukkan ke dalam kueri karena ini adalah kueri HQL.
Terry
51

di kueri HQL , Jangan tulis nama Tabel , tulis nama kelas Entitas Anda di kueri Anda seperti

String s = "from Entity_class name";
query qry = session.createUqery(s);
Sanjeev Kumar
sumber
1
Anda menghemat waktu saya dan juga hidup saya (*> *)
Ved Prakash
19

Dalam kasus saya, saya hanya lupa menambahkan nativeQuery = true

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

Untuk Spring Boot dengan Spring Data JPA

ITisha
sumber
1
Terima kasih! hal yang sama terjadi dengan saya sekarang :)
essayoub
12

File hibernate.cfg.xml harus memiliki pemetaan untuk tabel seperti di bawah ini. Periksa apakah tidak ada di file Anda.

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

</hibernate-configuration>
.....
Barani r
sumber
1
ini adalah kasus saya, saat mengubah implementasi untuk bekerja dengan Oracle DB daripada Derby - dengan Derby, untuk beberapa alasan, mendeklarasikan entitas di persistence.xml tidak diperlukan (menurut saya logis, karena entitas sudah dianotasi) (mungkin itu karena pengemudi yang lebih tua (ojdbc6))
hello_earth
10

Jika Anda menggunakan anotasi JPA untuk membuat entitas, lalu pastikan nama tabel dipetakan bersama dengan anotasi @Table, bukan @Entity.

Dipetakan dengan salah:

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

Entitas yang dipetakan dengan benar:

@Entity
@Table(name="DB_TABLE_NAME")
public class DbTableName implements Serializable {
   ....
   ....
}
Cjo
sumber
3
Terima kasih! Itu persis dengan versi saya dari masalah ini.
Martin McCallion
1
Terima kasih sangat membantu. Tetap membantu orang lain
mukesh krishnan
4

Mungkin ini akan membuatnya lebih jelas, dan tentu saja masuk akal juga.

@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 {
...
}
konektoram
sumber
3

Ada satu kesempatan lagi untuk mendapatkan pengecualian ini meskipun kami menggunakan nama kelas, yaitu jika kami memiliki dua kelas dengan nama yang sama dalam paket yang berbeda. kami akan mendapatkan masalah ini.

Saya pikir hibernate mungkin mendapatkan ambiguitas dan melempar pengecualian ini, jadi solusinya adalah menggunakan nama lengkap yang memenuhi syarat (seperti com.test.Customerv )

Saya menambahkan jawaban ini yang akan membantu dalam skenario seperti yang saya sebutkan. Saya mendapat skenario yang sama macet untuk beberapa waktu.

Siva kumar
sumber
3

Tidak ada solusi lain yang berhasil untuk saya.

Bahkan jika menurut saya ini bukan praktik terbaik, saya harus menambahkannya ke dalam kode seperti ini

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

sini

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
sumber
3

Saya juga menghadapi masalah serupa ketika saya mulai mengerjakan Hibernate. Semua di dalam semua yang bisa saya katakan ada di createQuery, seseorang harus meneruskan nama kelas entitas bukan nama tabel tempat entitas dipetakan.

raj240
sumber
2

Artinya tabel Anda tidak dipetakan ke JPA. Salah satu Nama tabel salah (Mungkin peka huruf besar / kecil), atau Anda perlu memasukkan entri di file XML.

Selamat Coding :)

Debiprasad Behera
sumber
di file xml yang mana?
Subrahmanyam Janapamula
2

Orang lain yang menggunakan kelas pemetaan untuk Hibernate, pastikan bahwa telah ditujukan dengan benar ke paket model di sessionFactorydeklarasi kacang di bagian berikut:

<property name="packagesToScan" value="com.mblog.model"></property>
Majid
sumber
Saya mengalami masalah ini dengan mikronaut ketika saya lupa mengubah file konfigurasi packages-to-scansaya application.yml.
Ibrahim.H
1

Jika Anda kebetulan menggunakan java untuk konfigurasi, Anda mungkin perlu memeriksa beandeklarasi di bawah ini jika Anda memiliki perubahan level paket. Misal: com.abc.springpaket diubah menjadicom.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();
    }
mannedear
sumber
1

Dalam kasus saya: boot musim semi 2, beberapa sumber data (default dan kustom). entityManager.createQuerysalah: 'entitas tidak dipetakan'

saat debug, saya menemukan bahwa unitName entityManager salah (harus custom, tetapi faktanya default) dengan cara yang benar:

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

yang customer1berasal dari kedua kelas sumber data config:

@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();
}

Kemudian, entityManager benar.

Tapi, em.persist (entity) tidak berfungsi, dan transaksi tidak berfungsi.

Poin penting lainnya adalah:

@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 berasal dari kelas konfigurasi sumber data kedua:

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

Seluruh kelas konfigurasi sumber data kedua adalah:

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
sumber
menunjukkan cara
mengonfigurasi
0

Masalah terpecahkan sebagian. Selain membuat jdbc / resource (DB Derby) harus membuat JDBC Connection Pool untuk resource db di konsol admin Glassfish, dan memeriksanya di ping. Sekarang semua operasi CRUD bekerja dengan baik. Saya periksa, objek Pelanggan dalam database menambahkan dengan benar, perbarui dan hapus juga. Tetapi dalam log keluaran Glassfish memiliki pengecualian yang sama:

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
sumber
1
Sarankan buka pertanyaan baru ... ini bukan jawaban untuk pertanyaan pertama ... atau tingkatkan pertanyaan pertama Anda dengan kata kunci 'Perbarui'
Pipo
0

Harus menggunakan nama kelas Entitas untuk metode em.createQuery atau Harus menggunakan metode em.createNativeQuery untuk kueri asli tanpa kelas entitas

Dengan kelas Entitas:

em.createQuery ("pilih first_name dari CUSTOMERV")

Tanpa kelas Entitas atau kueri Asli:

em.createNativeQuery ("pilih c.first_name dari CUSTOMERV c")

Radhakrishnan
sumber
0

Di Apache Derby DB, jangan menggunakan nama tabel sebagai "pengguna" atau lebih karena kata kunci tersebut dicadangkan di Apache Derby tetapi akan berfungsi dengan baik di MySql.

Dalam Kueri, Anda harus menentukan nama kelas Entitas tempat Anda ingin mengambil datanya di klausa FROM dari Kueri.

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

Di sini, Pengguna adalah nama kelas Entitas Java saya (Pertimbangkan casing nama seperti di Java itu penting.)

Kshitiz Bathwal
sumber
0

Solusi lain yang berhasil:

Objek akses data yang sebenarnya melontarkan pengecualian ini adalah

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

Kesalahan yang saya lakukan pada potongan di atas adalah bahwa saya telah menggunakan nama tabel foo di dalam createQuery. Sebagai gantinya, saya harus menggunakan Foo, nama kelas yang sebenarnya.

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

Terima kasih untuk blog ini: https://www.arundhaj.com/blog/querysyntaxexception-not-mapped.html

Barani r
sumber
0

Orang lain yang menggunakan kelas pemetaan untuk Hibernate, pastikan bahwa telah ditujukan dengan benar ke paket model di deklarasi kacang sessionFactory di bagian berikut:

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

Kesalahan yang saya lakukan pada potongan di atas adalah bahwa saya telah menggunakan nama tabel foo di dalam createQuery. Sebagai gantinya, saya harus menggunakan Foo, nama kelas yang sebenarnya.

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

tambahkan parameter nativeQuery = true

contoh: @Query (value = "Perbarui kumpulan pengguna nama_user =: nama_pengguna, kata sandi =: kata sandi di mana user_id =: user_id", nativeQuery = true)

Shiwantha Viraj
sumber