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" 。
分享到:
相关推荐
在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象的集合属性上,以便实现对象关系映射(ORM)。本文将深入探讨Hibernate中的四种主要集合映射类型:Set、List、Array和Map,以及它们在实际...
5. **Array映射**:Array在Java中是固定大小的,但在Hibernate中,我们通常用它来映射数据库的一组相关列,而非对象的集合。`<array>`标签可以实现这种映射,但较少在实际应用中使用。 6. **Properties映射**:...
Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...
在Hibernate中,使用`<map>`标签来映射,`<index>`定义键的列,`<element>`定义值的列。 延迟加载(Lazy Loading)是Hibernate的一个重要特性。它意味着关联的对象或集合不会在实体加载时立即加载,而是在实际访问...
在 Hibernate 中,集合映射是指将 Java 集合类型与数据库表之间的映射关系。常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的...
例如,你可以用`@Entity`标记一个类作为Hibernate的实体,`@Table`指定对应的数据库表,`@Column`定义字段与列的映射,`@OneToMany`、`@ManyToOne`等表示关系映射。当编译源代码时,XDoclet读取这些注解并自动生成...
在上述映射中,`<key>`标签定义了外键`customer_id`,它关联了`orders`表中的`customer`表的主键`id`。`<one-to-many>`标签指定了关联的类,即`Order`类。 接下来,其他类型的集合映射: 1. **List**: List是有序的...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑代码解耦,提高开发效率。本篇主要探讨的是Hibernate中的多对多映射,这是一个复杂但常见的数据库关系,适用...
Set集合不允许有重复元素,因此在Hibernate中,set映射通常用于表示唯一性关系,如一对多关系。在Hibernate映射文件中,我们可以使用`<set>`标签来配置。例如: ```xml ``` 这里,`name`属性定义了集合...
在这个“Hibernate中文参考文档学习”中,我们可以深入理解Hibernate的核心概念、配置、实体映射、查询语言以及其他关键特性。 1. **核心概念** - **对象关系映射(ORM)**: ORM是将数据库中的数据模型转换为面向...
在Hibernate中,List映射到数据库时,会创建一个带有索引列的关联表,这个索引列用于维护集合中元素的顺序。例如,在员工与证书的关系中,每个员工可以有多个证书,而证书表中的"idx"列就是用于保持与员工表中的List...
通过Hibernate,开发者可以将Java对象映射到数据库表中,从而不必编写底层的SQL代码。Hibernate逍遥游记作为一本介绍Hibernate的书籍,由浅入深地讲解了如何使用Hibernate 3.3版本来实现Java对象的持久化。 知识点...
在IT领域,尤其是在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨Hibernate中的关联映射,特别是“一对多”和“多对一”的关系映射,这对于理解如何在...
检查实体类中的唯一约束,确保在插入数据前没有重复的键值。此外,确认数据库表的主键和外键约束设置正确。 4. **`MappingException`:** 映射文件配置错误会导致此异常。检查实体类和对应的`.hbm.xml`文件或使用了`...
`User.hbm.xml`文件则定义了这些属性如何映射到`users`表的各个列。 ### 四、总结 `hibernate-tools`插件是提升Hibernate开发效率的强大工具,它不仅简化了映射文件的生成,还能根据数据库结构自动生成实体类,...
在这个压缩包中,我们很可能会找到关于Hibernate基础、配置、实体类、会话管理、查询语言以及其他相关主题的详细章节。让我们逐一探讨这些核心概念。 1. Hibernate概述:Hibernate是Java领域最流行的ORM框架之一,...
Hibernate的核心在于持久化对象,它允许我们将Java类映射到数据库表,对象的属性对应于表的列。实体类是Java对象,而实体映射文件(.hbm.xml)则定义了这些对象与数据库之间的关系。 2. **配置Hibernate** 配置...
描述中的内容重复,进一步确认了这是关于Hibernate的源码学习材料,可能是传智播客教育机构提供的教学资料,旨在帮助学习者理解并掌握Hibernate的使用。 **Hibernate框架详解** Hibernate是一个开源的对象关系映射...
- **对象关系映射(ORM)**: Hibernate是ORM工具的代表,它将数据库表映射为Java类,表中的行映射为类的对象,列映射为对象的属性,实现了Java对象与数据库之间的透明交互。 - **SessionFactory和Session**: ...