Hibernate违反UNIQUE KEY约束

时间:2013-08-06 08:05:06

标签: java sql-server-2008 hibernate

我正在尝试使用Hibernate在MS SQL中插入一个对象,如果它在DB中不存在的话。 我打电话给查询方法它返回空列表但是真的在表中有这个对象!因此,当我调用insert方法时,hibernate想要插入对象,因为它认为表是空的,因此抛出违反UNIQUE KEY约束! 它适用于 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

1 个答案:

答案 0 :(得分:1)

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