私はpostGreSQLについてはあまりよく知られていませんが、これは必要なものに近いかもしれません。
var results = session.CreateCriteria<Reword>()
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("reword"), "reword")
.Add(Projections.Property("faq"), "faq")
)
.Add(Restrictions.Eq("reword","2"))
.Add(Restrictions.Eq("faq","SOME_FAQ"))
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(ReWordDTO)))
.List<ReWordDTO>();
DTOの列を必要に応じてコードに出力して連結することができます。条件で動作させるには、いくつかOR条件を追加する必要があります。
は次のようにSQLを生成する必要があります:あなたの元のクエリに似ており、あなたが探しているものに近いかもしれません
select Reword, Reword_faq
from me_review_entries
where reword=2
and reword_faq='SOME_FAQ'
を。私は、値が別々にあるので、where句で列を連結する必要があるかどうかはわかりません。
あなたの元:
SELECT ('reword#' || reword) || reword_faq as foo FROM me_review_entries re
WHERE ('reword#' || reword) || reword_faq = 'reword#2#SOME_FAQ'
は、それは次のように書き換えることでし 、データが、?:
SELECT (reword || reword_faq) as foo
FROM me_review_entries re
WHERE reword=2 and reword_faq='#SOME_FAQ'
ように書き換えることができた?:
SELECT (reword || reword_faq) as foo
FROM me_review_entries re
WHERE (reword || reword_faq) = '2#SOME_FAQ'
列の中には、記述したとおりに記述する必要があるかもしれません。そうした場合に、条件クエリにいくつかのOR条件を追加して動作させることができます。
また、CustomSQLFunctionを登録することもできます。
RegisterFunction("concat",
new SQLFunctionTemplate(NHibernateUtil.String, "(?1 || ?2)"));
Registering Custom SQL Functions in NHibernate
var results = session.CreateQuery("select concat(reword,rewordfaq)
from Reword
where concat(reword,rewordfaq)='2#SOME_FAQ'
").List();
|| SQLは有効ですか? – Peter
postGreSQLでconcatの文字列 –
を使用していますが、ここではネイティブの '
Rippo