Java Hibernate违反唯一密钥约束
如果数据库中不存在对象,我将尝试使用Hibernate在MS SQL中插入该对象。 我调用了find查询方法,它返回空列表,但实际上在表中有这个对象!结果,当我调用insert方法时,hibernate希望插入对象,因为它认为表是空的,所以抛出了违反唯一键约束的! 它可以在Oracle上正常工作,没有任何问题。 这可能是由于我的许可、架构或目录造成的吗Java Hibernate违反唯一密钥约束,java,sql-server-2008,hibernate,Java,Sql Server 2008,Hibernate,如果数据库中不存在对象,我将尝试使用Hibernate在MS SQL中插入该对象。 我调用了find查询方法,它返回空列表,但实际上在表中有这个对象!结果,当我调用insert方法时,hibernate希望插入对象,因为它认为表是空的,所以抛出了违反唯一键约束的! 它可以在Oracle上正常工作,没有任何问题。 这可能是由于我的许可、架构或目录造成的吗 <property name="schemaUpdate" value="${schemaUpdate}"/> <pr
<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>
正如您所提到的,将引发唯一约束异常。我认为您执行的查询与您执行的本机查询不同,或者您有字符集问题 如您所述,将引发唯一约束异常。我认为您执行的查询与您执行的本机查询不同,或者您有字符集问题 您已经设置了
show\u sql
set,因此您可以看到它正在运行的确切sql查询。您是否尝试过手动执行查询以查看得到的结果?我在MS SQL中手动执行查询,它运行良好并返回真正的元组!这与Hibernate的凭据完全相同?出于测试目的,请尝试使用本机查询而不是常规查询来检查对象是否存在于数据库中,本机查询将确保未使用缓存。您已设置了show\u sql
,因此您可以看到它正在运行的确切sql查询。您是否尝试过手动执行查询以查看得到的结果?我在MS SQL中手动执行查询,它运行良好并返回真正的元组!这与Hibernate的凭据完全相同?出于测试目的,请尝试使用本机查询而不是常规查询来检查对象是否存在于数据库中,本机查询将确保未使用缓存。谢谢,我遇到了字符集问题。我将属性的DB值从波斯语改为英语,所以它是固定的。谢谢,我有字符集问题。我将属性的DB值从波斯语改为英语,所以它是固定的。
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