【问题标题】:Error 404 : Spring MVC and Hibernate due to Hibernate Mapping错误 404:由于 Hibernate 映射导致的 Spring MVC 和 Hibernate
【发布时间】:2013-12-24 16:46:28
【问题描述】:

由于 applicationContext.xml 中的休眠映射而出现错误:404。但找不到解决办法。

我有一个新的类型是图像。

Image.java

import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

public class Image
{
    private String image_size;
    private String image_type;
    private MultipartFile image_file;
    private String image_file_url;
    private String image_status;
    <!-- Getters and Setters -->
}

以下是applicationContext.xml中的代码

<bean id="imageSessionFactoryBean" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSourceBean"></property>
    <property name="mappingResources">
        <value>xxx/xxx/xxx/bean/Image.hbm.xml</value>
    </property>
<property name="hibernateProperties">
    <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        <prop key="hibernate.show_sql">true</prop>
    </props>
</property>
</bean>

<bean id="imageHibernateTemplateBean" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="imageSessionFactoryBean"></property>
</bean>

通过仅更改 bean imageSessionFactoryBean 的 mappingResources 属性中的 value 属性,我可以看到应用程序正在运行,否则它会显示 ERROR:404。 我认为原因可能是 File(Image.java) 的名称,但我不确定。 Image.hbm.xml 还包含 Image.java 类到数据库表图像的映射。

图像.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Nov 8, 2012 9:26:27 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="xxx.xxx.xxx.bean.Image" table="image">
        <id name="img_id" type="java.lang.String">
        <column name="IMG_ID" />
        <generator class="native" />
    </id>
    <property name="content_uid" type="java.lang.String">
        <column name="CONTENT_UID" />
    </property>
    <property name="img_url" type="java.lang.String">
        <column name="IMG_URL" />
    </property>
    <property name="image_type_id" type="java.lang.String">
        <column name="IMAGE_TYPE_ID" />
    </property>
    <property name="image_size_id" type="java.lang.String">
        <column name="IMAGE_SIZE_ID" />
    </property>
    <property name="status" type="java.lang.String">
        <column name="STATUS" />
    </property>
    </class>
</hibernate-mapping>

【问题讨论】:

  • 仅通过更改 mappingResources 中的 value 属性,我就可以看到应用程序正常工作:那有什么问题?你有什么问题?
  • 只要我改变 xxx/xxx/xxx/bean/Image .hbm.xml 值属性。该应用程序有效
  • 我说清楚了吗...?? @JBNizet
  • Image.hbm.xml 文件包含 Image.java pojo 的休眠映射。一旦我将地址更改为另一个休眠映射文件 Image_Size_type.hbm.xml(这是 Image_Size_Type.java pojo 的休眠映射文件),应用程序就可以运行,即我可以在没有 404 错误的情况下运行应用程序,但这在逻辑上是错误的。

标签: xml spring hibernate spring-mvc hibernate-mapping


【解决方案1】:

我假设您想将 Image 类设为 Hibernate Entity 以便将其存储在数据库中。

这不起作用,因为它的字段private MultipartFile image_file;。我非常怀疑你可以用休眠存储这个字段。因此,不要将此归档,而是将其替换为字节数组。并用 Multipart 文件的内容填充这个字节数组。

public class Image
{
    //some primary key required.
    private int id;        

    private String image_size;
    private String image_type;
    private byte[] image_content;
    private String image_file_url;
    private String image_status;
    // Getters and Setters

    //Constructor without parameter required.
    public Image() {}        

    public void applyImgContent(MultipartFile upload) {
         this.image_conten = upload.getBytes();
    }

}

【讨论】:

  • 感谢@Ralph 的回复。但你错了。我已经发现我的错误只是我没有包含数据库中存在但不在我的 Image.java pojo 文件中的字段,因此到该类的休眠映射返回了一些错误,结果我得到了由于层次结构到达 applicationContext.xml(Spring 配置文件)而导致错误 404。
  • @HVT7:请您删除接受标记,以便我可以删除我的答案(当它是接受的答案时这是不可能的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
相关资源
最近更新 更多