org.hibernate.hql.intern.ast.QuerySyntaxException: টেবিলটি ম্যাপ করা হয়নি


98

আমার কাছে ওয়েব অ্যাপ্লিকেশন হাইবারনেট ৪.৩.৫ + ডার্বি ডাটাবেস ১০.১০.১.১+ আইডিই নেটবিন্স ৮.০ বিটা সহ গ্লাস ফিশ ৪.০ রয়েছে।

আমার পরবর্তী ব্যতিক্রম আছে:

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 

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> 

গ্রাহক। জাভা

    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>

গ্রাহক। 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>

উত্তর:


122

অবশেষে একটা ভুল পেলাম! আশা করি এটি কারও কাজে লাগবে। ডাটাবেসে একটি অনুরোধ করার সময় (আমার ক্ষেত্রে এটি অ্যাপাচি ডার্বি), বেসের নামটি প্রথমে বড় অক্ষরের অন্যান্য অক্ষরে লিখতে হবে need

এটি ভুল জিজ্ঞাসা:

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

এটি বৈধ জিজ্ঞাসা

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

এবং শ্রেণি সত্তা ডাটাবেস হিসাবে একই নাম হতে হবে, কিন্তু আমি নিশ্চিত না।


44
কারণ হতে পারে না। গ্রাহকের কাছ থেকে সি নির্বাচন করুন সি এটি সূক্ষ্ম ক্যোয়ারী হিসাবে গ্রাহক আপনার শ্রেণির নাম এবং আমাদের প্রশ্নের উত্তরটিতে টেবিলের নাম নয় ক্লাসের নামটি লিখতে হবে your ঠিক আছে। দয়া করে এটি পরীক্ষা করুন।
শোয়েব চিকাতে

পরামর্শের জন্য ধন্যবাদ শোলিব চিকতে!
ভ্লাদ ডব্রায়দিন

দয়া করে গাইড stackoverflow.com/questions/35657292/...
Pra_A

4
দুর্দান্ত, আমার পক্ষে কাজ করা একক জিনিসটি কেবল শ্রেণিবদ্ধের নামটি ডাটাবেস টেবিলের নামের চেয়ে ভাল ফর্ম্যাট করা ছিল। আমি মনে করি হাইবারনেট একটি সঠিক ম্যাপিং করতে সক্ষম হতে এটি প্রয়োজন। এটি সামান্য বিভ্রান্তিকর এবং জেডিবিসি-র মতো সাধারণ উপায় নয় তবে আমি আশা করি ভবিষ্যতের সংস্করণগুলি এই ইস্যুটিতে পছন্দ করার চেষ্টা করবে। এই জাতীয় কিছু প্রশ্নের জন্য জেডিবিসি থেকে কিছু স্টাইল রাখা একটি প্লাস হবে।
আকাহ

4
ধন্যবাদ এটা আমার জন্য কাজ করেছে। আসলে এটি সারণীর নাম নয় সত্তা / শ্রেণির নাম নেয়। উদাহরণস্বরূপ: যদি আপনার টেবিলের নাম গ্রাহক হয় এবং আপনার সত্তার নাম গ্রাহক হয় তবে এটি এইচকিউএল কোয়েরি হওয়ায় এটি গ্রাহককে কোয়েরিতে নেবে।
টেরি

50

মধ্যে HQL ক্যোয়ারী, না লিখতে সারণী নাম , আপনার লেখা সত্তা বর্গ নাম মত আপনার ক্যোয়ারীতে

String s = "from Entity_class name";
query qry = session.createUqery(s);

আপনি আমার সময় এবং আমার জীবনও রক্ষা করেছেন (*> *)
বেদ প্রকাশ

19

আমার ক্ষেত্রে আমি কেবল যুক্ত করতে ভুলে গেছি nativeQuery = true

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

স্প্রিং ডেটা জেপিএ সহ স্প্রিং বুটের জন্য


4
ধন্যবাদ! আমার সাথে এখন একই ঘটনা ঘটেছে :)
13

12

hibernate.cfg.xML ফাইলের নীচের মতো টেবিলগুলির জন্য ম্যাপিং থাকা উচিত। এটি আপনার ফাইলে অনুপস্থিত কিনা তা পরীক্ষা করে দেখুন।

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

</hibernate-configuration>
.....

4
আমার ক্ষেত্রে এটি ছিল, ডার্বির পরিবর্তে অরাকল ডিবি-র সাথে কাজ করার বাস্তবায়ন পরিবর্তন করার সময় - কোনও কারণে ডার্বির সাথে অধ্যবসায় প্রকাশ করার প্রয়োজন ছিল না x এটি কোনও পুরানো ড্রাইভারের কারণেই ছিল (ojdbc6)
হ্যালো_আরথ

10

সত্ত্বা তৈরি করতে আপনি যদি জেপিএ টীকাগুলি ব্যবহার করছেন এবং তারপরে নিশ্চিত করুন যে টেবিলের নামটি @Entity এর পরিবর্তে @ টেবিল টীকা সহ ম্যাপ করা আছে।

ভুলভাবে ম্যাপ করা হয়েছে:

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

সঠিকভাবে ম্যাপ করা সত্তা:

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

4
ধন্যবাদ! এই সমস্যাটি হ'ল আমার সংস্করণটি।
মার্টিন ম্যাককালিয়ন

4
ধন্যবাদ খুব সহায়ক। অন্যকে সাহায্য করা
মুকেশ কৃষ্ণান

4

এটি এটিকে আরও স্পষ্ট করে তুলবে এবং অবশ্যই এটিও বোধগম্য।

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

3

এই ব্যতিক্রমটি পাওয়ার আরও একটি সুযোগ আছে এমনকি আমরা ক্লাসের নামটিও ব্যবহার করেছিলাম, যদি আমাদের বিভিন্ন প্যাকেজে একই নামে দুটি ক্লাস থাকে। আমরা এই সমস্যা পেতে হবে।

আমি মনে করি হাইবারনেট অস্পষ্টতা পেতে পারে এবং এই ব্যতিক্রম ছুঁড়ে দেয়, তাই সমাধানটি হ'ল সম্পূর্ণ যোগ্যতাসম্পন্ন নাম ব্যবহার করা (যেমন com.test.Customerv )

আমি এই উত্তরটি যুক্ত করেছি যা আমি যেমন উল্লেখ করেছি দৃশ্যে সহায়তা করবে। আমি একই দৃশ্যটি কিছু সময়ের জন্য আটকে গেলাম।


3

অন্য কোনও সমাধান আমার পক্ষে কাজ করেনি।

এমনকি যদি আমি এটির সর্বোত্তম অনুশীলন নাও মনে করি, তবে আমাকে এটির মতো কোডে যুক্ত করতে হয়েছিল

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

এখানে

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;
}

3

হাইবারনেট নিয়ে কাজ শুরু করার সময় আমিও একইরকম সমস্যার মুখোমুখি হয়েছি। আমি যা বলতে পারি তা সবই ক্রিয়েটকিউরিতে রয়েছে সত্তার শ্রেণীর নাম সত্তার সাথে ম্যাপ করা টেবিলের নাম নয় entity


2

এর অর্থ আপনার টেবিলটি জেপিএ-তে ম্যাপ করা হয়নি। হয় সারণির নামটি ভুল (সম্ভবত কেস সংবেদনশীল), অথবা আপনাকে এক্সএমএল ফাইলটিতে একটি এন্ট্রি রাখা দরকার।

শুভ কোডিং :)


কোন এক্সএমএল ফাইল?
সুব্রহ্মণ্যম জনপমুল

2

হাইবারনেটের জন্য ম্যাপিং ক্লাস ব্যবহার করছে এমন অন্যান্য ব্যক্তিরা নিশ্চিত হন যে নীচের অংশে শিমের ঘোষণায় প্যাকেজটির মডেলটি সঠিকভাবে সম্বোধন করেছেন sessionFactory:

<property name="packagesToScan" value="com.mblog.model"></property>

আমি packages-to-scanআমার application.ymlকনফিগার ফাইলটিতে পরিবর্তন করতে ভুলে গিয়েছিলাম তখন আমার কাছে এই সমস্যাটি মাইক্রোনেট ছিল ।
ইব্রাহিম.এইচ

1

আপনি যদি কোনও সুযোগে কনফিগারেশনের জন্য জাভা ব্যবহার করেন beanতবে আপনার প্যাকেজ স্তর পরিবর্তন হলে আপনার নীচের ঘোষণাটি পরীক্ষা করতে হবে । উদাহরণস্বরূপ: com.abc.springপ্যাকেজ পরিবর্তিত হয়েছেcom.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();
    }

1

আমার ক্ষেত্রে: বসন্ত বুট 2, একাধিক ডাটাসোর্স (ডিফল্ট এবং কাস্টম)। entityManager.createQueryভুল হতে: 'সত্তা ম্যাপ করা হয় না'

ডিবাগ করার সময়, আমি জানতে পারি যে সত্তাটি ম্যানেজারের ইউনিট নামটি ভুল (কাস্টম হওয়া উচিত, তবে সত্যটি ডিফল্ট হওয়া উচিত) সঠিকভাবে:

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

customer1দ্বিতীয় ডেটাউত্স কনফিগ ক্লাস থেকে হল:

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

তারপরে, সত্তা ম্যানেজারটি ঠিক।

তবে, em.persist (সত্তা) কাজ করে না, এবং লেনদেন কাজ করে না।

আর একটি গুরুত্বপূর্ণ বিষয় হ'ল:

@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 দ্বিতীয় ডাটাসোর্স কনফিগারেশন শ্রেণীর থেকে:

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

পুরো দ্বিতীয় ডাটাসোর্স কনফিগারেশন শ্রেণিটি হ'ল:

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


0

আংশিক সমস্যার সমাধান হয়েছে। জেডিবিসি / রিসোর্স তৈরির পাশাপাশি (ডিবি ডার্বি) গ্লাসফিশ অ্যাডমিন কনসোলে ডিবি রিসোর্সের জন্য জেডিবিসি কানেকশন পুল তৈরি করতে হয়েছিল, এবং এটি পিংংয়ের উপর পরীক্ষা করা উচিত। এখন সমস্ত সিআরইউডি অপারেশন ঠিকঠাক কাজ করে। আমি চেক করি, ডাটাবেসে গ্রাহককে সঠিকভাবে যুক্ত করে আপত্তি করি, আপডেট করি এবং মুছুন। তবে গ্লাস ফিশে আউটপুট লগের একই ব্যতিক্রম রয়েছে:

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)

4
একটি নতুন প্রশ্ন খোলার পরামর্শ দিন ... এটি প্রথম প্রশ্নের উত্তর নয় ... বা 'আপডেট' কীওয়ার্ড দিয়ে আপনার প্রথম প্রশ্নটি বাড়িয়ে দিন
পিপো

0

Em.createQuery পদ্ধতির জন্য সত্তা শ্রেণীর নাম ব্যবহার করা উচিত বা সত্তা শ্রেণি ছাড়াই নেটিভ কোয়েরির জন্য em.createNativeQuery পদ্ধতি ব্যবহার করা উচিত

সত্তা শ্রেণি সহ:

em.createQuery ("CUSTOMERV থেকে প্রথম নাম নির্বাচন করুন")

সত্তা শ্রেণি বা স্থানীয় কোয়েরি ছাড়াই:

em.createNativeQuery ("CUSTOMERV সি থেকে সি। প্রথম নাম নির্বাচন করুন")


0

অ্যাপাচি ডার্বি ডিবিতে, "ব্যবহারকারী" বা অন্য হিসাবে টেবিলের নাম ব্যবহার করা থেকে বিরত থাকুন কারণ এগুলি অ্যাপাচি ডার্বিতে সংরক্ষিত কীওয়ার্ড তবে মাইএসকিএল-তে সূক্ষ্মভাবে কাজ করবে।

ক্যোয়ারিতে, আপনাকে অবশ্যই কোয়েরির FROM ধারাতে ডেটা আনতে চান এমন সত্তা শ্রেণীর নাম উল্লেখ করতে হবে।

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

এখানে, ব্যবহারকারী আমার জাভা সত্তা শ্রেণীর নাম (জাভা যেমন এটি গুরুত্বপূর্ণ তেমন কেসিংয়ের বিষয়টি বিবেচনা করুন))


0

আর একটি সমাধান যা কাজ করেছে:

ডেটা অ্যাক্সেস অবজেক্ট যা প্রকৃতপক্ষে এই ব্যতিক্রমটি ছুঁড়েছিল তা হ'ল

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

উপরের স্নিপেটে আমি যে ভুলটি করেছিলাম তা হ'ল আমি ক্রিয়েওকিওরির ভিতরে টেবিলের নাম ফু ব্যবহার করেছি। পরিবর্তে, আমি ফু ব্যবহার করতে পারি, প্রকৃত শ্রেণীর নাম।

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

এই ব্লগকে ধন্যবাদ: https://www.arundhaj.com/blog/querysyntaxexception-not-maped.html


0

হাইবারনেটের জন্য ম্যাপিং ক্লাস ব্যবহার করছে এমন অন্যান্য ব্যক্তিরা সেশন ফ্যাক্টরি বিন শিমের ঘোষণায় প্যাকেজটির মডেলটি সঠিকভাবে সম্বোধন করেছেন তা নিশ্চিত করুন:

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

উপরের স্নিপেটে আমি যে ভুলটি করেছিলাম তা হ'ল আমি ক্রিয়েওকিওরির ভিতরে টেবিলের নাম ফু ব্যবহার করেছি। পরিবর্তে, আমি ফু ব্যবহার করতে পারি, প্রকৃত শ্রেণীর নাম।

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

0

প্যারামিটার নেটিকিওকিয়ার যুক্ত করুন = সত্য

উদাহরণস্বরূপ: @ কিউরি (মান = "ব্যবহারকারী সেট ব্যবহারকারী ব্যবহারকারী নাম =: ব্যবহারকারী_নাম, পাসওয়ার্ড =: পাসওয়ার্ড যেখানে ব্যবহারকারী_আইডি =: ব্যবহারকারী_ আইডি", নেটিকিওওয়ারি = সত্য)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.