2016-12-16 4 views
0

電話とメールで別個の注文を選択する1つのhibernate/strutsクエリがあります。異なるオブジェクトコンストラクタを持つHibernate

select.append("select distinct new no.projectname.domain.Order(ord.telephone, ord.email) from Order ord 

と順序でコンストラクタ:

public Order(String telephone, String email) { 
    this.telephone = telephone; 
    this.email = email; 
} 
私は今、彼は明確な電話や個別のメールを望んでいる場合は、ユーザーが選択可能なクエリを1つ(または2)を作成したい

if(phone) { 
     select.append("select distinct new no.projectname.domain.Order(ord.telephone) from Order ord 
} else { 
     select.append("select distinct new no.projectname.domain.Order(ord.mail) from Order ord 
} 

しかし、どのように私は電話または電子メールで渡すことを知っているオブジェクトのオーダーでコンストラクタを作ることができますか?

コンストラクタに名前を付ける方法はありますか?このような :

select distinct new no.projectname.domain.Order.PhoneConstructor(telephone) 

答えて

0

あなたは問題がオーダーオブジェクト内のコンストラクタで3つのコンストラクタ

select.append("select distinct") ; 

    if(email != null && telephone != null) { 
    select.append("new no.projectname.domain.Order(ord.telephone, ord.email)"); 
    } 

    else if(email != null){ 
    select.append("new no.projectname.domain.Order(ord.email)"); 
    } 

    else if(telephone != null){ 
    select.append("new no.projectname.domain.Order(ord.telephone)"); 
    } 

    else {   
    } 

    select.append(" from Order ord"); 
+0

を使用することにより、以下のように行うことができます。メールや電話番号が送られてくるかどうかはわかりません。 – TorK