`

关于Hibernate中列的重复映射

阅读更多
Project是一个基础类,begin是一个java.sql.Date类型的属性,Project.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 ">
<hibernate-mapping   package= "com.hbucc.research.objects ">
    <class   name= "Project "   table= "project "   lazy= "false ">
        <id   name= "projectid "   column= "projectid "   type= "long ">
            <generator   class= "increment "/>
        </id>
        <property   name= "projectname "   column= "projectname "   type= "string "   not-null= "true "/>
        <property   name= "begin "   column= "begin "   type= "date "/>
        <property   name= "end "   column= "begin "   type= "date "/>
        <property   name= "amount "   column= "amount "   type= "int "   not-null= "true "/>
        <property   name= "validate "   column= "validate "   type= "boolean "   not-null= "true "/>
        <many-to-one   name= "teacher "   column= "teacherid "   class= "com.hbucc.research.objects.Teacher "   not-null= "true "/>
        <many-to-one   name= "tasksource "   column= "tasksourceid "   class= "com.hbucc.research.objects.TaskSource "   not-null= "true "/>
        <many-to-one   name= "institute "   column= "instituteid "   class= "com.hbucc.research.objects.Institute "   not-null= "true "/>
    </class>
</hibernate-mapping>
运行时确总让加上insert= "false "   update= "false ",出错如下:

org.hibernate.MappingException:   Repeated   column   in   mapping   for   entity:   com.hbucc.research.objects.Project   column:   begin   (should   be   mapped   with   insert= "false "   update= "false ")
at   org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:575)
at   org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:597)
at   org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:615)
at   org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:405)
at   org.hibernate.mapping.RootClass.validate(RootClass.java:192)
at   org.hibernate.cfg.Configuration.validate(Configuration.java:984)
at   org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1169)
at   com.hbucc.research.businesslogic.BusinessLogic. <clinit> (BusinessLogic.java:33)
at   com.hbucc.research.struts.loginAction.execute(loginAction.java:22)
at   org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at   org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at   org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at   org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at   org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at   java.lang.Thread.run(Thread.java:595)
只所以报错是由于上面映射文件中的end、begin同事映射到begin列中。在hibernate中实体类中可以有多个属性映射到表中的,但是只能有一个属性能够影响数据库中该列的值。可以把其他列设置为只读的,即update="false" insert="false"  。
分享到:
评论

相关推荐

    hibernate集合的映射

    在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象的集合属性上,以便实现对象关系映射(ORM)。本文将深入探讨Hibernate中的四种主要集合映射类型:Set、List、Array和Map,以及它们在实际...

    hibernate中的集合映射范例程序

    5. **Array映射**:Array在Java中是固定大小的,但在Hibernate中,我们通常用它来映射数据库的一组相关列,而非对象的集合。`&lt;array&gt;`标签可以实现这种映射,但较少在实际应用中使用。 6. **Properties映射**:...

    hibernate映射枚举类型

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...

    Hibernate_容器映射技术笔记

    在Hibernate中,使用`&lt;map&gt;`标签来映射,`&lt;index&gt;`定义键的列,`&lt;element&gt;`定义值的列。 延迟加载(Lazy Loading)是Hibernate的一个重要特性。它意味着关联的对象或集合不会在实体加载时立即加载,而是在实际访问...

    Hibernate常见集合映射(Set,List_Array,Map,Bag)

    在 Hibernate 中,集合映射是指将 Java 集合类型与数据库表之间的映射关系。常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的...

    JAVA培训-HIBERNATE的集合映射.doc

    在上述映射中,`&lt;key&gt;`标签定义了外键`customer_id`,它关联了`orders`表中的`customer`表的主键`id`。`&lt;one-to-many&gt;`标签指定了关联的类,即`Order`类。 接下来,其他类型的集合映射: 1. **List**: List是有序的...

    Hibernate多对多的映射

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑代码解耦,提高开发效率。本篇主要探讨的是Hibernate中的多对多映射,这是一个复杂但常见的数据库关系,适用...

    hibernate 集合映射

    Set集合不允许有重复元素,因此在Hibernate中,set映射通常用于表示唯一性关系,如一对多关系。在Hibernate映射文件中,我们可以使用`&lt;set&gt;`标签来配置。例如: ```xml ``` 这里,`name`属性定义了集合...

    XDoclet 与Hibernate 映射

    例如,你可以用`@Entity`标记一个类作为Hibernate的实体,`@Table`指定对应的数据库表,`@Column`定义字段与列的映射,`@OneToMany`、`@ManyToOne`等表示关系映射。当编译源代码时,XDoclet读取这些注解并自动生成...

    Hibernate中文参考文档学习

    在这个“Hibernate中文参考文档学习”中,我们可以深入理解Hibernate的核心概念、配置、实体映射、查询语言以及其他关键特性。 1. **核心概念** - **对象关系映射(ORM)**: ORM是将数据库中的数据模型转换为面向...

    详解Java的Hibernate框架中的List映射表与Bag映射

    在Hibernate中,List映射到数据库时,会创建一个带有索引列的关联表,这个索引列用于维护集合中元素的顺序。例如,在员工与证书的关系中,每个员工可以有多个证书,而证书表中的"idx"列就是用于保持与员工表中的List...

    Hibernate逍遥游记 .pdf

    通过Hibernate,开发者可以将Java对象映射到数据库表中,从而不必编写底层的SQL代码。Hibernate逍遥游记作为一本介绍Hibernate的书籍,由浅入深地讲解了如何使用Hibernate 3.3版本来实现Java对象的持久化。 知识点...

    hibernate知识复习三:关联映射:一对多/多对一

    在IT领域,尤其是在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨Hibernate中的关联映射,特别是“一对多”和“多对一”的关系映射,这对于理解如何在...

    Hibernate映射导致的几个异常

    检查实体类中的唯一约束,确保在插入数据前没有重复的键值。此外,确认数据库表的主键和外键约束设置正确。 4. **`MappingException`:** 映射文件配置错误会导致此异常。检查实体类和对应的`.hbm.xml`文件或使用了`...

    hibernate-tool 插件

    `User.hbm.xml`文件则定义了这些属性如何映射到`users`表的各个列。 ### 四、总结 `hibernate-tools`插件是提升Hibernate开发效率的强大工具,它不仅简化了映射文件的生成,还能根据数据库结构自动生成实体类,...

    《精通Hibernate》学习-对象关系映射基础.zip

    在这个压缩包中,我们很可能会找到关于Hibernate基础、配置、实体类、会话管理、查询语言以及其他相关主题的详细章节。让我们逐一探讨这些核心概念。 1. Hibernate概述:Hibernate是Java领域最流行的ORM框架之一,...

    hibernate实践

    Hibernate的核心在于持久化对象,它允许我们将Java类映射到数据库表,对象的属性对应于表的列。实体类是Java对象,而实体映射文件(.hbm.xml)则定义了这些对象与数据库之间的关系。 2. **配置Hibernate** 配置...

    传智播客hibernate源码

    描述中的内容重复,进一步确认了这是关于Hibernate的源码学习材料,可能是传智播客教育机构提供的教学资料,旨在帮助学习者理解并掌握Hibernate的使用。 **Hibernate框架详解** Hibernate是一个开源的对象关系映射...

    hibernate框架基本包

    - **对象关系映射(ORM)**: Hibernate是ORM工具的代表,它将数据库表映射为Java类,表中的行映射为类的对象,列映射为对象的属性,实现了Java对象与数据库之间的透明交互。 - **SessionFactory和Session**: ...

Global site tag (gtag.js) - Google Analytics