当前位置: 首页 > 面试题库 >

休眠问题,jdbc IDENTITY_INSERT设置为OFF

刘京
2023-03-14
问题内容

当我尝试通过hibernate方式提交到SQL Server时出现JDBC错误

当IDENTITY_INSERT设置为OFF时,无法在表’Report’中为标识列插入显式值

我正在使用由包含以下内容的netbeans生成的映射:

<class name="orm.generated.Report" table="Report" schema="dbo" catalog="DatabaseName">
    <id name="id" type="int">
        <column name="ID" />
        <generator class="assigned" />
    </id>

在我看来,它应该正确地进行身份插入。

关于如何解决此问题的任何想法?

编辑:
一些文档链接,供后人,
http://www.hibernate.org/hib_docs/v3/reference/en-
US/html/mapping.html#mapping-declaration-id-generator

HTTP://www.roseindia .net / hibernate /
hibernateidgeneratorelement.shtml


问题答案:

除非将“ IDENTITY_INSERT”设置为“ ON”,否则您不能插入SQL
Server的标识列中。由于生成器类是“已分配”的,因此Hibernate假设您在保存对象之前在Java中为“
id”设置了显式值,并且Hibernate可以将值直接插入数据库中。您需要:

  1. 选择一个不同的生成器类,例如“ native”
  2. 将IDENTITY_INSERT设置为“ ON”


 类似资料:
  • 问题内容: 我有一个使用hibernate 3.1和JPA批注的应用程序。它有一些带有byte []属性的对象(大小为1k-200k)。它使用JPA @Lob批注,并且hibernate 3.1可以在所有主要数据库上读取它们,这似乎隐藏了JDBC Blob供应商的特性(应该这样做)。 当我们发现hibernate3.5 破坏了(并且不会修复) postgresql中的这个注释组合时(没有解决方法)

  • 问题内容: 我已经使用Seam 2.2.1和MySQL编写了一个正在运行的应用程序。我现在尝试将应用程序连接到 Informix, 并且当我从 hibernate ()执行查询时,出现以下异常: org.hibernate.exception.genericjdbcexception无法执行查询 当我执行查询时,执行成功。 生成的sql是 选择前2个user0_.USER_ID作为USER1_12

  • 问题内容: 下面的函数是我在Web应用程序中具有的按钮的actionListener,我正在从数据库中的表中删除旧选择的行,并将新行插入数据库中。 我一直在例外:会话关闭!有人可以解释一下如何在hibernate状态下关闭会话(自动吗?)以及如何使用它们。 这是该异常的详细堆栈跟踪: 谢谢, 问题答案: 在Hibernate会话显然配置为基于请求的情况下,您在会话范围内的受管Bean中使用了延迟获

  • 问题内容: 在hibernate映射中,我设置了属性,这将获取父级的所有子级记录。 整个应用程序都在使用它。 这在我的应用程序的特定模块上造成了性能问题,我只想在其中获取父记录。 由于无法在其他许多地方使用该属性,因此我无法将其更改为。有没有办法来解决这个问题? 请让我知道是否需要更多信息。 问题答案: 这些在hibernate状态并不具有这种功能,因为它尊重您的习惯。因此,我建议解决您的需求的方

  • 问题内容: 我试图配置文件为我和应用。相关部分如下所示: 但是,如果我不将库直接包含到我的buildpath中,我会不断获取。我有什么问题吗,因为在构建项目时不会下载此依赖项? 问题答案: 尝试代替。 这将包括所有必需的依赖项。进行此更改后,请检查Maven依赖项层次结构。 顺便说一句,Maven Central中最新的hibernate版本是4.1.18。

  • 问题内容: 我正在使用hibernate状态向下转换query.uniqueResult()来处理问题。我有2类:-UserBean-UserLogin 在第一个中,我具有所有表字段以及所有处理数据的方法的映射。相反,第二个仅代表将存储在用户会话中的一些用户数据。 在登录方法的特定点,我执行查询并得到1行(我已经检查了查询是否确实返回了一些结果)。关键是我无法从Object类型(即query.un