[英]Spring + Hibernate : Unknown entity
I'm trying to get an annotation based hibernate configuration working. 我正在尝试使用基于注释的hibernate配置。
applicationContext.xml applicationContext.xml中
<!-- ============================= -->
<!-- DATASOURCE -->
<!-- ============================= -->
<bean name="logDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${logs.ds.jndi.name}"/>
</bean>
<!-- ============================= -->
<!-- SESSION FACTORY -->
<!-- ============================= -->
<bean id="logSessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="packagesToScan" value="com.example.logs.persistence.entity"/>
<property name="dataSource" ref="logDataSource"/>
<property name="hibernateProperties">
<props>
<!-- dialect -->
<prop key="hibernate.dialect">${logs.ds.dialect}</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
<!-- schema -->
<prop key="hibernate.default_schema">${logs.ds.default_schema}</prop>
<!-- logging debug information -->
<prop key="hibernate.show_sql">${logs.ds.debug}</prop>
<prop key="hibernate.format_sql">${logs.ds.debug}</prop>
<prop key="hibernate.generate_statistics">${logs.ds.debug}</prop>
<prop key="hibernate.use_sql_comments">${logs.ds.debug}</prop>
<prop key="configurationClass">org.hibernate.cfg.AnnotationConfiguration</prop>
</props>
</property>
</bean>
<bean id="logTransactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="logSessionFactory"/>
</bean>
LogsConfiguration.java LogsConfiguration.java
package com.example.logs.persistence.entity;
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 = "logs_configuration")
public class LogsConfiguration {
// ...
}
The problem is, when I try to save a LogsConfiguration
with my DAO, I get this error : 问题是,当我尝试使用我的DAO保存
LogsConfiguration
时,我收到此错误:
Caused by: org.hibernate.MappingException: Unknown entity: com.example.logs.persistence.entity.LogsConfiguration
at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776)
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1533)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:682)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:674)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:669)
at com.example.logs.persistence.dao.impl.AbstractDaoImpl.create(AbstractDaoImpl.java:125)
Where did I go wrong ? 我哪里做错了 ? Everything seems ok to me (I am using the
javax.persistence
annotations) 一切似乎都没问题(我正在使用
javax.persistence
注释)
Instead of org.springframework.orm.hibernate5.LocalSessionFactoryBean
use org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
而不是
org.springframework.orm.hibernate5.LocalSessionFactoryBean
使用org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
Your entry would be modified as below: 您的参赛作品将被修改如下:
<bean id="logSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="packagesToScan" value="com.example.logs.persistence.entity"/>
<property name="dataSource" ref="logDataSource"/>
<property name="hibernateProperties">
...
</property>
</bean>
I found the solution. 我找到了解决方案。 My application is a filter and the problem was that I had two session factories.
我的应用程序是一个过滤器,问题是我有两个会话工厂。
My DAO was autowiring the wrong one. 我的DAO自动装错了。 To fix that, I added a
@Qualifier
to get the good one. 为了解决这个问题,我添加了一个
@Qualifier
来获得好的。
So I replaced that 所以我取而代之
@Autowired
protected SessionFactory sessionFactory;
with that 接着就,随即
@Autowired
@Qualifier("logSessionFactory")
protected SessionFactory sessionFactory;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.