簡體   English   中英

休眠中的查詢語法異常

[英]Query syntax exception in hibernate

MisRecords.java

@Entity
    @Table(name="dat_emprecords")
    public class MisRecords {
    @Id
    @GeneratedValue
    @Column(name="pk_EmpRec_Idx")
        int id;
        @Column(name="EmpRec_EmpFName")
        String firstName;
        @Column(name="EmpRec_EmpLName")
        String lastName;
        @Column(name="fk_EmpRec_EmpID")
        int empId;
        @Column(name="fk_emprec_empreportingmgrid")
        int empReportingManagerId;
        // setters and getters

Test.java

public class Test {
public static void main(String[] args) {
Session session=new  AnnotationConfiguration().configure().buildSessionFactory().openSession();
 Query query=session.createQuery("from MisRecords");
    List<MisRecords> list=query.list();{
    for(MisRecords employee:list){
          System.out.println(employee.getFirstName());
     }
 }
}    
}

我正在嘗試使用休眠方式映射現有數據庫,但出現此異常,請幫忙。

線程“主” org.hibernate.hql.ast.QuerySyntaxException中的異常:未映射MisRecords [來自MisRecords]

好像您忘記了在休眠配置中為MisRecords添加映射。

變體a)具有單獨映射文件的hibernate.cfg.xml:

如果您通過hibernate.cfg.xml手動配置了hibernate上下文,則可以在該文件中添加映射,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

        <!-- Default Database Dialect in Hibernate -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!--  Schema -->
        <property name="hibernate.default_schema">YOUR_DB_SCHEME</property>

        ...

        <!-- Your mapping for your model goes after -->
        <mapping class="coolproject.modelpackage.ModelEntity1"/>
        <mapping class="coolproject.modelpackage.ModelEntity2"/>
        <mapping class="coolproject.modelpackage.ModelEntity3"/>
        <mapping class="coolproject.modelpackage.ModelEntity4"/>

    </session-factory>
</hibernate-configuration>

變體b)使用JPA的Spring ORM

如果您運行的是Spring Web框架上下文,則可以通過在spring持久性配置bean中配置實體管理器工廠來啟用@Entity類的自動掃描:

import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
public class PersistenceJPAConfig {

    ...

    /**
     * EntityManager Factory Bean
     * 
     * @return
     *      {@link LocalContainerEntityManagerFactoryBean}
     */
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource());

        // add base packages containing @Entity annotated classes here
        em.setPackagesToScan(new String[] { "packages", "to.scan", "for.Entity.annotated.classes" });

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());

        return em;
    }

    ...

}

干杯,cet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM