【问题标题】:org.hibernate.MappingException: Unknown entity: in spring ormorg.hibernate.MappingException:未知实体:在春天 orm
【发布时间】:2013-09-05 06:57:12
【问题描述】:

我得到以下异常

org.hibernate.MappingException:未知实体:com.sample.Student

我在 Stackoverflow 上看到了很多相同问题的答案,但他们都建议使用 javax.persistence 中的 @Entity 注释而不是 hibernate,在我的情况下,我只使用 javax.persistence 中的它,但仍然出现此异常。

我的 POJO 类

package com.sample;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table
public class Student {

    @Id
    int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    String firstName;
    String lastName;

    public String getFirstName() {
        return firstName;
    }

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

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

还有我的 Manger 课

   package com.sample;

import java.util.Properties;

import org.hibernate.SessionFactory;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;

public class ORMManager {

    /**
     * @param args
     */
    public static void main(String[] args) {
    DriverManagerDataSource ds = new DriverManagerDataSource();
    ds.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
    ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    ds.setUsername("system");
    ds.setPassword("tiger");

    LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
    lsfb.setDataSource(ds);
    HibernateTemplate template = new HibernateTemplate();
    Properties prop = new Properties();
    prop.put("hibernate.dialect", "org.hibernate.dialect.OracleDialect");
    prop.put("hibernate.show_sql", "true");
    prop.put("hbm2ddl.auto", "create");

    lsfb.setHibernateProperties(prop);
    try {
        lsfb.afterPropertiesSet();
    } catch (Exception e) {

        e.printStackTrace();
    }
    template.setSessionFactory((SessionFactory)lsfb.getObject());
    template.afterPropertiesSet();

    Student s = new Student();
    s.setFirstName("pallavi");
    s.setLastName("sing");
    template.save(s);
    System.out.println("done");


    }

}

请帮我解决这个问题

【问题讨论】:

  • 你有persistence.xml文件吗?
  • 不,我没有persistence.xml,因为我没有使用EntityManger,对不起,我只是想学习
  • 默认情况下它将实体名称作为表名,所以我猜这不需要

标签: java spring hibernate jpa spring-orm


【解决方案1】:

你试图混合两种东西

注释

LocalSessionFactoryBean

使用LocalSessionFactoryBean的子类

AnnotationSessionFactoryBean

替换这个

LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();

  AnnotationSessionFactoryBean lsfb = new AnnotationSessionFactoryBean();
  Class [] annotatedClasses =  {Student.class};
  lsfb.setAnnotatedClasses(annotatedClasses);

  AnnotationSessionFactoryBean lsfb = new AnnotationSessionFactoryBean();    
  annotationSessionFactoryBean.setPackagesToScan(new String[]{"com.sample"});

看到这个answer

【讨论】:

  • 添加你的包 annotationSessionFactoryBean.setPackagesToScan(new String[]{"com.sample"});
  • 类 [] annotatedClasses = { Student.class }; lsfb.setAnnotatedClasses(annotatedClasses);
【解决方案2】:

LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean(); 替换为以下内容

     AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean();
     annotationSessionFactoryBean.setPackagesToScan(new String[]{"com.sample"});

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 2011-11-28
    • 2014-04-16
    • 2012-12-04
    • 2014-08-05
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多