Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Hibernate映射问题_Java_Spring_Hibernate - Fatal编程技术网

Java Spring Hibernate映射问题

Java Spring Hibernate映射问题,java,spring,hibernate,Java,Spring,Hibernate,因为我不熟悉休眠和映射。我无法找到这个原因的确切问题。当我发现问题的具体内容时,我将更新问题标题。我在运行spring项目时遇到以下错误。xml是从JBoss Hibernate工具生成的。(我会) 堆栈跟踪如下所示 Mar 10, 2014 4:28:05 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springfram

因为我不熟悉休眠和映射。我无法找到这个原因的确切问题。当我发现问题的具体内容时,我将更新问题标题。我在运行spring项目时遇到以下错误。xml是从JBoss Hibernate工具生成的。(我会)

堆栈跟踪如下所示

    Mar 10, 2014 4:28:05 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
    INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@a4c4a0d: display name [org.springframework.context.support.ClassPathXmlApplicationContext@a4c4a0d]; startup date [Mon Mar 10 16:28:05 IST 2014]; root of context hierarchy
    Mar 10, 2014 4:28:05 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [config/beanLocations.xml]
    Mar 10, 2014 4:28:05 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [database/dataSource.xml]
    Mar 10, 2014 4:28:05 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [database/hibernate.xml]
    Mar 10, 2014 4:28:21 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
    INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@a4c4a0d]: org.springframework.beans.factory.support.DefaultListableBeanFactory@5152a09f
    Mar 10, 2014 4:28:21 PM org.springframework.core.io.support.PropertiesLoaderSupport loadProperties
    INFO: Loading properties file from class path resource [properties/hibernate.properties]
    Mar 10, 2014 4:28:21 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5152a09f: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sessionFactory,transactionManager,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,aneurismLocationDAO,annotationDAO,appUserDAO,deviceDAO,deviceManufacturerDAO,jobDAO,patientDAO,resourceDAO,roleDAO,strategyDAO,surgeryDAO,surgeryDeviceDAO,userRoleDAO]; root of factory hierarchy
    Mar 10, 2014 4:28:21 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
    INFO: Loaded JDBC driver: com.mysql.jdbc.Driver
    37 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.5-Final
    39 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
    43 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
    47 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
    17632 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Resource -> resource
    28298 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Device -> device
    40931 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.AneurismLocation -> aneurism_location
    43487 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Strategy -> strategy
    46348 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Job -> job
    48916 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.SurgeryDevice -> surgery_device
    51356 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.UserRole -> user_role
    54070 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Surgery -> surgery
    56434 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Annotation1 -> annotation
    58732 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Patient -> patient
    61120 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.Role -> role
    63747 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.DeviceManufacturer -> device_manufacturer
    66318 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.e.models.AppUser -> app_user
    Mar 10, 2014 4:29:28 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
    INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5152a09f: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sessionFactory,transactionManager,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,aneurismLocationDAO,annotationDAO,appUserDAO,deviceDAO,deviceManufacturerDAO,jobDAO,patientDAO,resourceDAO,roleDAO,strategyDAO,surgeryDAO,surgeryDeviceDAO,userRoleDAO]; root of factory hierarchy
    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [database/hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Association references unmapped class: org.e.models.Annotation
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at Application.main(Application.java:23)
    Caused by: org.hibernate.MappingException: Association references unmapped class: org.endovantage.models.Annotation
        at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(HbmBinder.java:2473)
        at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(HbmBinder.java:2752)
        at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
        at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1221)
        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:673)
        at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
        ... 15 more
这是我的DAO实现

    package org.e.persistance.dao.impli;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.e.models.Annotation1;
import org.e.persistance.dao.Annotation1DAO;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository("annotation1DAO")
public class Annotation1DAOImpli implements Annotation1DAO {

    private static final Log log = LogFactory.getLog(Annotation1DAOImpli.class);

    @Autowired
    private SessionFactory sessionFactory;

    public void persist(Annotation1 transientInstance) {
        log.debug("persisting Annotation1 instance");
        try {
            sessionFactory.getCurrentSession().persist(transientInstance);
            log.debug("persist successful");
        } catch (RuntimeException re) {
            log.error("persist failed", re);
            throw re;
        }
    }


    public void delete(Annotation1 persistentInstance) {
        log.debug("deleting Annotation1 instance");
        try {
            sessionFactory.getCurrentSession().delete(persistentInstance);
            log.debug("delete successful");
        } catch (RuntimeException re) {
            log.error("delete failed", re);
            throw re;
        }
    }

    public Annotation1 merge(Annotation1 detachedInstance) {
        log.debug("merging Annotation1 instance");
        try {
            Annotation1 result = (Annotation1) sessionFactory.getCurrentSession()
                    .merge(detachedInstance);
            log.debug("merge successful");
            return result;
        } catch (RuntimeException re) {
            log.error("merge failed", re);
            throw re;
        }
    }

    public Annotation1 findById(java.lang.Long id) {
        log.debug("getting Annotation1 instance with id: " + id);
        try {
            Annotation1 instance = (Annotation1) sessionFactory
                    .getCurrentSession().get("Annotation1", id);
            if (instance == null) {
                log.debug("get successful, no instance found");
            } else {
                log.debug("get successful, instance found");
            }
            return instance;
        } catch (RuntimeException re) {
            log.error("get failed", re);
            throw re;
        }
    }


}
对不起,内容太长了。我真的很感谢你在这方面的帮助

编辑:

休眠配置文件

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <!-- Hibernate session factory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource">
            <ref bean="dataSource" />
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>

        <property name="mappingResources">
            <list>
                <value>/hibernate/Resource.hbm.xml</value>
                <value>/hibernate/Device.hbm.xml</value>
                <value>/hibernate/AneurismLocation.hbm.xml</value>
                <value>/hibernate/Strategy.hbm.xml</value>
                <value>/hibernate/Job.hbm.xml</value>
                <value>/hibernate/SurgeryDevice.hbm.xml</value>
                <value>/hibernate/UserRole.hbm.xml</value>
                <value>/hibernate/Surgery.hbm.xml</value>
                <value>/hibernate/Annotation1.hbm.xml</value>
                <value>/hibernate/Patient.hbm.xml</value>
                <value>/hibernate/Role.hbm.xml</value>
                <value>/hibernate/DeviceManufacturer.hbm.xml</value>
                <value>/hibernate/AppUser.hbm.xml</value>
            </list>
        </property>

    </bean>
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>

org.hibernate.dialogue.mysqldialogue
真的
/hibernate/Resource.hbm.xml
/hibernate/Device.hbm.xml
/hibernate/AneurismLocation.hbm.xml
/hibernate/Strategy.hbm.xml
/hibernate/Job.hbm.xml
/hibernate/SurgeryDevice.hbm.xml
/hibernate/UserRole.hbm.xml
/hibernate/Surgery.hbm.xml
/hibernate/Annotation1.hbm.xml
/hibernate/Patient.hbm.xml
/hibernate/Role.hbm.xml
/hibernate/DeviceManufacturer.hbm.xml
/hibernate/AppUser.hbm.xml

这是我的数据源配置

    <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>properties/hibernate.properties</value>
    </property>
</bean>

<bean id="dataSource" 
         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

</beans>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <!-- Database Configuration -->
    <import resource="../database/dataSource.xml" />
    <import resource="../database/hibernate.xml" />
    <context:annotation-config />
    <context:component-scan base-package="org.endovantage" />
</beans>

属性/hibernate.properties
这是我的bean位置配置

    <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>properties/hibernate.properties</value>
    </property>
</bean>

<bean id="dataSource" 
         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

</beans>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <!-- Database Configuration -->
    <import resource="../database/dataSource.xml" />
    <import resource="../database/hibernate.xml" />
    <context:annotation-config />
    <context:component-scan base-package="org.endovantage" />
</beans>


谢谢

您需要添加对映射文件的引用,该映射文件将
org.e.models.Annotation1
映射到
Hibernate.xml

<session-factory>
    <mapping resource="org/e/models/Annotation1.hbm.xml" />
</session-factory>

您需要添加对映射文件的引用,该映射文件将
org.e.models.Annotation1
映射到
Hibernate.xml

<session-factory>
    <mapping resource="org/e/models/Annotation1.hbm.xml" />
</session-factory>

我认为您遗漏了这一行:

<mapping resource="path/to/your/annotation.hbm.xml"></mapping>


在您的hibernate.cfg.xml中。

我认为您缺少这一行:

<mapping resource="path/to/your/annotation.hbm.xml"></mapping>

在hibernate.cfg.xml中,

未映射类“注释”。加

 <value>/hibernate/Annotation1.hbm.xml</value>
/hibernate/Annotation1.hbm.xml
如果不存在,则创建文件。

您的类“注释”未映射。加

 <value>/hibernate/Annotation1.hbm.xml</value>
/hibernate/Annotation1.hbm.xml


如果不存在,则创建文件。

是否可以发布您的hibernate配置file@henrycharles我已经添加了我的hibernate.xml您的
hibernate.xml
不是hibernate配置文件。@PeterRader我将添加我正在使用的所有配置文件嗨,各位,谢谢你们的大力帮助。它首先崩溃的原因是,hbm.xml中的类不是完全限定的。在那之后,我得到了错误的答案。所以,我将+1所有人!:)你可以发布你的hibernate配置吗file@henrycharles我已经添加了我的hibernate.xml您的
hibernate.xml
不是hibernate配置文件。@PeterRader我将添加我正在使用的所有配置文件嗨,各位,谢谢你们的大力帮助。它首先崩溃的原因是,hbm.xml中的类不是完全限定的。在那之后,我得到了错误的答案。所以,我将+1所有人!:)我没有使用hibernate.cfg.xml文件。我跟着。他没有包括这一点。他定义了一个hibernate.xml,我认为它的内容是相同的。请参见编辑。谢谢,我没有使用hibernate.cfg.xml文件。我跟着。他没有包括这一点。他定义了一个hibernate.xml,我认为它的内容是相同的。请参见编辑。感谢洛蒂将它添加到hibernate.xml中。请看编辑。谢谢你这么快reply@Diode它说有一个类org.endovantage.models.Annotation没有任何映射。这是类org.e.models.Annotation1的副本吗?是的,我查看了所有地方,看看是否有遗漏的注释类需要手动重命名。那么,是它导致了这个问题吗?@Diode检查包org.endovantage.models并删除Annotation.java如果不需要,我试图删除它,情况会变得更糟。映射中有一个或多个关系:(我已将其添加到hibernate.xml中。请查看编辑。谢谢您的快速回复。)reply@Diode它说有一个类org.endovantage.models.Annotation没有任何映射。这是类org.e.models.Annotation1的副本吗?是的,我到处查看,看看是否有任何遗漏的注释类需要手动重命名。是吗这导致问题?@Diodel检查包org.endovantage.models并删除Annotation.java如果没有必要,我试图删除它,情况会变得更糟。映射中有一个或多个关系:(好的,我从注释更改为注释1,因为我认为这是问题的原因。我将更改所有内容并再次检查。好的,我从注释更改为注释1,因为我认为这是问题的原因。我将更改所有内容并再次检查。