質問

これらのクエリを実行する方法はありますか?

役に立ちましたか?

解決

本当にこれが必要な場合は、次のようなことをしたいのです。

session.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

これはノロックと同じです。

それを行う前に、汚い読みをしたい場合は本当に注意深く考えてください。ほとんどの場合、人々はこれを行います。なぜなら、それは彼らが常に行ってきたことだからです。特に、これはキャッシングではうまく機能しません。

実際、 このスレッド 少し問題になります。決定する前に注意深く読んでください。

他のヒント

Hibernateの最新バージョンでは、このようにしなければなりません。

  Session session = (Session) em.getDelegate();
        session.doWork(new Work() {
            @Override
            public void execute(Connection connection) throws SQLException {
                connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
            }
        });

ネイティブになると「(nolock)with(nolock)」を行うことができます。これは極端ですが、代替案がトランザクション分離レベルを変更している場合、これを行うことができます。

この例はMSSQLのものであることに注意してください。

String sqlQueryString = "SELECT * FROM my_classes_table WITH (nolock) WHERE columnName = :columnValue";

SQLQuery sqlQuery= session.createSQLQuery(sqlQueryString).addEntity(MyClass.class);
sqlQuery.setLong("columnValue", value);
List<MyClass> out = sqlQuery.list();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top