2011-08-10 4 views
0

nhibernate fellas、intカラムをnhibernateのboolプロパティにマッピングする際の問題

ドメインオブジェクトにブール型としてマップされたintカラムがあります。すべてが今日まで良好だったが、boolプロパティでQueryOverを実行したときに実際に生成されたsqlがsqlserverの好みに似ていないことがわかった。

queryOverは、以下のように見える

.Where(Restrictions.On<OrderLine>(ol => _orderLineAlias.Approved).IsLike(true)); 

そして、そのためのSQLは、列のデータ型がintであるよう

select * from Orderline where Approved like 'true' 

は、あなたがここで問題を見ることができ、この文句を言わないの復帰を願っています私は何でも。 DBデータ型またはEntityクラスの変更はオプションではありません。誰もこれまでにこれまでに行ったことがありますか?これには解決策がありますか?

提案を歓迎します:)

おかげ /BB

+0

あなたのdbモデルを変更する時間。なぜあなたはそれらを別のものにしますか – Baz1nga

+0

heh..good idea ..しかし、これに依存する多くのレガシーロジックがあるので、動作しません。 – Illuminati

+0

レガシーコードaginstあなたのdB ..うーん.. – Baz1nga

答えて

0

あなたが設定ファイルに次の行に何かをしようとしましたか?

<property name="hibernate.query.substitutions">true 1, false 0</property> 

Link to NH documentation on this topic

+0

ありがとう、しかしそれは何の違いもありません。同じSQL構文が生成されるかどうか。おそらく、LinqToHibernateでのみ動作します。このインスタンスではQueryOverを使用しています。 – Illuminati

+0

私はHQL(これは恐竜と呼ばれます:)と一緒に使っていますが、うまくいきます。別の提案として、boolのコンバーターとしてだけ機能する別のプロパティを作成します。<-> intここで、int property/fieldは基底のカラムにマッピングされ、boolプロパティはUI /その他のもので使用されます。 –

+0

あなたの問題に合ったものも見つけましたhttp://stackoverflow.com/questions/5063541/nhibernate-3-0-0-4000-handles-bools-differently-in-queries –

3

あなたは試してみました:

QueryOver<OrderLine>().Where(x => x.Approved == true) 

を?

関連する問題