gpt4 book ai didi

java - Spring 3.2/hibernate 4.1.9 : Use of @OneToMany or @ManyToMany targeting an unmapped class error

转载 作者:行者123 更新时间:2023-12-01 04:52:44 26 4
gpt4 key购买 nike

我现在对一小段代码感到疯狂。我正在创建一个基于 spring MVC 3.2 的简单休息服务,并使用带有 spring-orm 和 hibernate4.1.9 的 JPA 持久层。

我遇到了一个关于未映射类的奇怪错误。这是我的第一个实体(在建立关系之前运行良好)

User.java

@Entity
@Table(name="user")
public class User {
//[...]
@OneToMany(mappedBy="owner", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private Set<FileInfo> fileInfos;
//[...]
}

FileInfo.java

@Entity
@Table(name="file_info")
public class FileInfo {
//[...]
@ManyToOne
@JoinColumn(name = "owner_id")
private User owner;
//[...]
}

Servlet 配置

<?xml  version="1.0" encoding="UTF-8"?>
<!--[...]-->
<context:component-scan base-package="org.mypackage.myapp" />
<!--[...]-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="packagesToScan" value="org.mypackage.myapp.model" />
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!--[...]-->
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--[...]-->

错误跟踪

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: org.mypackage.myapp.model.User.fileInfos[org.mypackage.myapp.model.FileInfo]
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1057)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:733)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:668)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1597)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1355)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:242)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:372)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:357)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)

有谁知道问题出在哪里吗?我对此技术没有太多经验,并且我不确定本文中提供的信息是否足够。

感谢您的帮助!

编辑:

这是我的 hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping package="org.mypackage.myapp.model"/>
<mapping class="org.mypackage.myapp.model.User"/>
<mapping class="org.mypackage.myapp.model.FileInfo"/>
<mapping class="org.mypackage.myapp.model.Group"/>
<mapping class="org.mypackage.myapp.model.FileInfoGroup"/>
</session-factory>
</hibernate-configuration>

ollie314

最佳答案

好的,我终于找到了应用程序在部署过程中生成错误的原因!

我可能在配置过程中犯了一个错误。我正在配置一个 spring-servlet 文件,但没有看到我的 spring 配置文件夹中还有另一个名为 root-context.xml 的配置文件。它是在我的项目配置期间由 STS 自动生成的(可能是由于我的错误操作),这是服务器用于部署应用程序的文件。在此文件中,我的 session 工厂 bean 未正确配置。因此,修复错误后,一切正常。

注意:我不确定 hibernate.cfg.xml 与 spring 的必要性,因为所有内容都可以在根 spring 配置文件中进行。在我看来,只有当一个项目多次定义 session 工厂时才有必要。根据 DRY 模式,hibernate.cfg,xml 在这种情况下是相关的。任何人都可以告诉我我是否错了?

关于java - Spring 3.2/hibernate 4.1.9 : Use of @OneToMany or @ManyToMany targeting an unmapped class error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com