2012-04-05 11 views
0

私のプロジェクトでは、hibernate、struts、extjsを使用しています。nullをコピーし、空でないフィールドを同じタイプの別のオブジェクト(オブジェクトは同じタイプ)にコピーします

CUSTID、
CUSTNAME、 アドレス、私はcustNameでオブジェクトの顧客を取得

とUI側から私のプロジェクトで

電話:

は、私はこれらのフィールドを持つCustomerオブジェクトを持っています。

私は上記のオブジェクト(custNameは一意です)を更新する必要があります。同じ顧客名のオブジェクトが1つしかありません。だから私は顧客名(DBからのオブジェクト)を使用してそのオブジェクトを取得します。

更新された顧客名でオブジェクトを保存する必要があります。

私はUIからCustomerオブジェクトを持って次のように私が保存した場合、カスト

カスタマーCUST1 = getCustomerByName(cust.getCustName())です。

cust.setCustId(cust1.getCustId());セーブ(cust);

この場合、私は顧客の住所と電話番号を失います。

したがって、nullでない1つのオブジェクトまたは空のフィールド値を同じタイプの別のオブジェクトにコピーするにはどうすればよいですか。

誰でも助けてください。私はちょうどここで立ち往生した。それは私を止めることです。

ありがとうございます!

+0

CustomerNameが一意で、CustomerIdが更新される好奇心が強いデータモデル。 – radimpe

+0

@radimpe内部目的として顧客IDを使用していますが、私の顧客名は私のケースでは一意です。ユニケーンの問題ではなく、私はちょうどデータモデルの例をあげました。しかし、どのようにコピーするのですか? – Bindu

答えて

0

2つのオプション。リフレクションを使用してすべてのフィールドを検索し、nullでないフィールドをコピーします。または、より良いオプションでは、各フィールドを明示的にチェックし、データベースインスタンスのフィールドを適切に更新する更新メソッドを記述します。

0

custcust1への参照を混在させています。

すでにcustにアドレスがある場合を除いて、custIdに設定していないと、custにもアドレスcust1がコピーされます。

+0

顧客名がヌルかアドレスがnullのたびにチェックする必要があります。ここでは、データモデルのフィールドが少なくなっています。私の場合、それはとてもたくさんあります。私はすべてのことをチェックできないので、空ではなくヌルだけをコピーしたい。私が古い値をコピーしない限り、失われます。 – Bindu

+0

@ Chinni - しかし、あなたがチェックしない限り、値がnullであるかどうかを知ることができます...時には、それを吸い取って、それらの 'if'ステートメントを作り出すことがあります。 – pap

+0

これは、反映のトレードオフがある場合です。リフレクションにはランタイム効率のコストがありますが、最小限のコードで任意の数のフィールドを設定できます。 –

関連する問題