【问题标题】:Hibernate Violation of UNIQUE KEY constraintHibernate 违反 UNIQUE KEY 约束
【发布时间】:2013-08-06 08:05:06
【问题描述】:

如果数据库中不存在对象,我正在尝试使用 Hibernate 在 MS SQL 中插入该对象。 我调用了 find 查询方法,它返回空列表,但表中确实有这个对象!结果,当我调用 insert 方法时,hibernate 想要插入对象,因为它认为 table 是空的,所以它抛出 Violation of UNIQUE KEY constraint ! 它在 Oracle 上运行没有任何问题。 这可能是由我的权限或架构或目录引起的吗?

<property name="schemaUpdate" value="${schemaUpdate}"/>
    <property name="hibernateProperties">
        <props>
            <!--<prop key="hibernate.default_schema">${database.schema}</prop>-->
            <prop key="hibernate.default_schema">${database.schema}</prop>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
            <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>

            <prop key="hibernate.query.substitutions">true 'Y', false 'N'</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.max_fetch_depth">3</prop>
            <prop key="hibernate.use_outer_join">true</prop>

和,

hibernate.dialect=org.hibernate.dialect.SQLServerDialect

hibernate.show_sql=true
#true: if the database is needed to be created otherwise false
schemaUpdate=false
hibernate.hbm2ddl.auto=update

base.packages=com.cityid
database.schema=dbo

hibernate.cache.provider_class=net.sf.ehcache.hibernate.SingletonEhCacheProvider
REM hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider

【问题讨论】:

  • 你已经设置了show_sql,所以你可以看到它正在运行的确切的SQL查询。您是否尝试过手动执行查询以查看得到的结果?
  • 我在 MS SQL 中手动执行查询,它运行良好并返回真元组!
  • 这与 Hibernate 的凭据完全相同?
  • 为了测试目的,尝试使用Native查询而不是常规查询来检查数据库中是否存在对象,本机查询将确保没有使用缓存。

标签: java sql-server-2008 hibernate


【解决方案1】:

正如您所提到的,抛出了唯一约束异常。我认为您执行的查询与您执行的本机查询不同,或者您有字符集问题。

【讨论】:

  • 谢谢,我有字符集问题。我将 DB 中的属性值从波斯语更改为英语,所以它是固定的。
猜你喜欢
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多