1

DBに存在しない場合、Hibernateを使用してMS SQLにオブジェクトを挿入しようとしています。空のリストを返す検索クエリメソッドを呼び出しましたが、実際にはテーブルにこのオブジェクトがあります! その結果、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
4

1 に答える 1

1

ご指摘のとおり、一意制約例外がスローされます。実行するクエリが実行するネイティブ クエリと同じではないか、文字セットに問題があると思います。

于 2013-08-06T09:26:16.597 に答える