`
mrzhangtufu
  • 浏览: 61956 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate多对多连接表使用的异常

阅读更多

链接表的如果是不是使用双主键,必须确定主键列不能重复,而Hibernate插入多对多时链接表的操作很可能会使主键重复,例如有连接表 link_book_image 连接表book和image,有两个字段book_id,image_id分别引用book表和image表,如果连接表只是将book_id设为主键,当hibernate插入book对象时,就会产生类似以下的异常,提示主键插入重复:
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
...
......
.....
Caused by: java.sql.BatchUpdateException: Duplicate entry '8' for key 1
.......
......

故这时就有必要使用双主键了,以便使一列主键重复的同时,另一列主键可以作为辨别键。如将book_id,image_id都设为主键。

分享到:
评论

相关推荐

    Hibernate一对一,一对多,多对多实例

    在Hibernate中,可以通过`@ManyToMany`注解定义多对多关系,并使用`@JoinTable`定义连接表。例如,Student实体和Course实体的多对多关系: ```java @Entity public class Student { @ManyToMany @JoinTable...

    hibernate使用c3p0连接池的资料

    ### hibernate使用c3p0连接池的知识点详解 #### 一、Hibernate与C3P0连接池概述 - **Hibernate**: 是一个全功能的Java持久层框架,它提供了对象关系映射(ORM)功能,使得Java应用可以方便地与数据库进行交互。...

    Hibernate 多对一连接表单向关联

    这篇博客“Hibernate 多对一连接表单向关联”可能详细讲解了如何在Hibernate中配置和使用这种关联。 首先,我们要理解多对一关联的基本概念。假设我们有两个实体,例如`Employee`(员工)和`Department`(部门)。...

    Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G的演示代码

    总之,这个压缩包文件提供的内容对于学习如何在Myeclipse 10.0环境下使用Hibernate 4.3.5与Oracle 11G交互非常有价值,特别是对那些正在学习或迁移至新版本Hibernate的开发者。通过研究这个项目,你可以了解到ORM...

    hibernate 配置 C3P0 连接池

    `hibernate.c3p0.timeout`定义了获取连接的超时时间,超过这个时间后,将抛出异常。这个值应根据应用的平均响应时间和数据库服务器的性能来设定。 `hibernate.c3p0.max_statements`限制了预编译的SQL语句数量,这...

    hibernate(user-role多对多映射)

    在Hibernate中,这种关系通过中间关联表(也称为连接表或连接实体)来实现。 **三、User-Role多对多映射的配置** 1. **实体类定义** 首先,我们需要为User和Role创建对应的Java实体类,并在每个类中定义一个Set类型...

    hibernate根据字段生成数据库表

    - **实体类**:定义 Java 实体类,并使用 Hibernate 的注解或 XML 文件描述类与数据库表之间的映射关系。 3. **示例代码**: - 给定的示例代码中,可以看到 `SchemaExport` 类的使用方式。 #### 三、核心代码...

    Eclipse上使用Hibernate

    您需要将 hibernate3.jar 添加到项目中,同时也需要将 Hibernate 的 lib 文件夹下的所有文件添加到项目中,以免出现 ClassNotDef 的异常。 配置 Hibernate 在配置 Hibernate 之前,您需要在项目中添加 Oracle 的 ...

    Hibernate多表查询.txt

    这包括一对一、一对多和多对多等多种类型,不同的关联关系会影响查询语句的编写和执行效率。 - **优化查询性能**:多表查询可能涉及大量数据的读取和处理,因此性能优化是不容忽视的一环。合理设计查询语句,避免...

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    本篇将深入探讨如何在Hibernate中实现数据库操作而无需使用注解,以及如何解决在Hibernate 3中遇到的连接SQL的常见问题。 首先,让我们了解在Hibernate中免注解实现数据库操作的基本步骤: 1. **配置Hibernate**: ...

    hibernate连接数据[Mysql]的代码实例

    本实例将深入讲解如何使用Hibernate连接到MySQL数据库,并执行基本的数据操作。 1. **Hibernate环境配置** - 首先,你需要在项目中添加Hibernate和MySQL的JDBC驱动依赖。这通常通过Maven或Gradle的pom.xml或build....

    Hibernate自动创建表结构示例--Oracle

    标题"Hibernate自动创建表结构示例--Oracle"表明我们将使用Hibernate在Oracle数据库中自动生成表结构,这是通过Hibernate的`hibernate.hbm2ddl.auto`配置属性实现的。这个属性可以设置为"create"、"update"、...

    hibernate连接Orcale

    本文将详细介绍如何使用Hibernate连接Oracle 11g Release 2(11R2)数据库。 首先,要实现Hibernate与Oracle的连接,我们需要完成以下几个步骤: 1. **环境准备**:确保已安装JDK、Oracle 11g数据库以及相应的...

    Hibernate,hibernate笔记

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许...理解和熟练使用Hibernate配置、异常处理、HQL查询以及IDE集成是每个Java开发者必备的技能。通过上述步骤,你可以更好地了解和应用Hibernate进行数据库操作。

    jsf+hibernate+javabean完成对表的增删查改

    2. **配置Hibernate**:设置Hibernate的配置文件(hibernate.cfg.xml),定义数据库连接信息,以及实体类与数据库表的映射(在映射文件或实体类上使用注解)。 3. **定义实体类**:根据数据库表结构,创建相应的...

    hibernate一对多例子

    下面详细介绍如何使用Hibernate来实现一对多的关系。 ### 1. 关系模型及SQL表结构 假设我们有两个实体:`Student`和`Book`,其中`Student`与`Book`之间是一对多的关系。为了建立这种关系,我们需要创建两个SQL表:...

    springmvc整合Hibernate的登录实例带表结构

    - 数据库连接池:为了提高效率,一般会使用连接池(如 C3P0、HikariCP)来管理数据库连接。 - 安全性:在实际生产环境中,密码通常不会明文存储,而是进行加密后再存入数据库。 - 错误处理:添加异常处理机制,...

    hibernate aip hibernate aip

    Hibernate是一种开源的ORM框架,它通过映射Java类到数据库表,使得开发者可以使用面向对象的方式来操作数据库。这消除了SQL的直接编写,降低了数据库访问的复杂性。Hibernate的核心组件包括Configuration、...

    Hibernate、Spring和Struts工作原理及使用理由

    Hibernate通过配置文件支持一对一、一对多、多对一和多对多的关系映射。 **缓存机制**: - **一级缓存**:内部缓存,每个Session有自己的缓存,生命周期与Session相同。 - **二级缓存**:可选的全局缓存,支持应用...

    Struts2+Hibernate的增删改查

    综上所述,"Struts2+Hibernate的增删改查"项目是一个典型的Java Web开发示例,涵盖了前端请求处理、后端数据库操作、业务逻辑封装等多个层面,对于初学者来说,这是一个很好的学习和实践平台。通过这个项目,开发者...

Global site tag (gtag.js) - Google Analytics