org.hibernate.MappingException:未知实体:在spring orm中
我得到以下exception
org.hibernate.MappingException:未知实体:com.sample.Student
我在Stackoverflow上看到了很多相同问题的答案,但是他们都建议使用来自javax.persistence而不是hibernate的@Entity注释,在我的例子中我只使用它来自javax.persistence但仍然得到这个exception。
我的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"); } }
请帮我解决这个问题
你试图混合两件事
注释
和
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"});
看到这个答案
替换LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
以下内容
AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean(); annotationSessionFactoryBean.setPackagesToScan(new String[]{"com.sample"});
- 使用更新Cascade进行hibernate软删除
- 在bean工厂中找不到持久性exception转换器。 无法执行exception转换
- 在分层Spring MVC Web应用程序中处理Hibernate Sessions的最佳方法
- Jersey,Guice和Hibernate – EntityManager线程安全
- 保存具有复杂关系的实体时的StaleStateException
- Hibernate持久化Map 而不引用另一个表
- Hibernate可以使用MySQL的“ON DUPLICATE KEY UPDATE”语法吗?
- 如何使用Struts2和hibernate维护会话?
- Hibernate / JPA是否考虑了transiant修饰符(而不是注释)