
[英]Exception in thread "main" org.hibernate.MappingException: Unknown entity
[英]Exception : org.hibernate.MappingException: Unknown entity
我在应用程序中使用Spring 3和Hibernate 4。 在运行时,我得到了例外。
注意:我在网上搜索,确保我的Entity批注的导入正确,并且xml文件中的组件扫描也进展顺利。
01:51:15,184错误[STDERR] org.hibernate.MappingException:未知实体:com.voya.sid.entity.ApplicationEntity 01:51:15,184错误[STDERR]在org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java :1146)01:51:15,184 org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1358)错误[STDERR] org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId出现错误:[STDERR] (AbstractSaveEventListener.java:116)01:51:15,184在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206)发生错误[STDERR]在org.hibernate.event发生错误[STDERR] .internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)01:51:15,184 org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191)上的错误[STDERR] 01:51:15,184错误[STDERR]在org.hibernat e.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)01:51:15,184 org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)处的错误[STDERR] 01:51:15,184错误org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:683)的[STDERR] 01:51:15,184 org.hibernate.internal.SessionImpl.save(SessionImpl.java:675)01:51的错误[STDERR]: org.hibernate.internal.SessionImpl.save(SessionImpl.java:671)出现15,184错误[STDERR]
以下是我的申请案例:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="SID_APP_INSTANCE")
public class ApplicationEntity {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="APP_INSTANCE_KEY")
// other code
}
@Component
@Service("ApplicationService")
public class ApplicationServiceImpl implements ApplicationService{
public ApplicationDao getApplicationDao() {
return applicationDao;
}
public void setApplicationDao(ApplicationDao applicationDao) {
this.applicationDao = applicationDao;
}
@Autowired
private ApplicationDao applicationDao;
// some methods..
}
-------------------------------------------------- ------------------------------。
@Component
@Repository("ApplicationDao")
public class ApplicationDaoImpl implements ApplicationDao {
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void addApplication(ApplicationEntity app) {
try{
System.out.println("Inside ApplicationDaoImpl..My Life : My Session :> "+ this.sessionFactory.getCurrentSession());
this.sessionFactory.getCurrentSession().save(app);
}catch (Exception e) {
System.out.println("Exception in saving..");
e.printStackTrace();
}
}
// other methods...
}
root-context.xml:
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven/>
<context:component-scan base-package="com" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- <property name="dataSource" ref="dataSource" /> -->
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
添加Hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@host:50004:abc</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password">pass</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.default_schema">abc</property>
<property name="show_sql">true</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.validator.apply_to_ddl">false</property>
<property name="hibernate.validator.autoregister_listeners">false</property>
</session-factory>
</hibernate-configuration>
请帮忙。
它可以帮助您:
将以下代码添加到您的root-context.xml文件中。
<value>ApplicationEntity(with package name)</value>
另外,尝试将以下内容添加到root-context.xml文件中。
<context:annotation-config />
您需要执行类似的操作来实现上下文扫描以获取要注释的注释。
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="dataSource"
p:configLocation="WEB-INF/classes/hibernate.cfg.xml"
p:packagesToScan="com.example.model"
/>
将以下内容添加到您的xml中:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>your.package.name.here</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.