4

次のドメイン構造があります。

abstract class Person { String name; //with getter and setter }
class Employer extends Person {}
class Employee extends Person {}
class Contract { Person contractor; //with getter and setter }
class PersonDTO implements Serializable { String name; String type; //type == 'Employee' or 'Employer' }
class ContractDTO implements Serializable { PersonDTO contractor; }

この次のドーザー マッピングを設定すると、次のようになります。

<mapping>
   <class-a>Person</class-a>
   <class-b>PersonDTO</class-b>
</mapping>
<mapping>
   <class-a>Employer</class-a>
   <class-b>PersonDTO</class-b>
</mapping>
<mapping>
   <class-a>Contract</class-a>
   <class-b>ContractDTO</class-b>
</mapping>

フィールド Contract.contractor は抽象クラスであり、ドーザーはそれをインスタンス化する方法を推測できないため、私の問題は B から A へのフィールド Contract.contractor のマッピングに関するものです。

Employerしたがって、私の質問は簡単です。フィールド Contract.contractor のマッピングのために、 if type == 'Employer' および他の場所のインスタンスをインスタンス化する必要があることを dozer にどのように示すことができますEmployee か?

ご協力ありがとうございました。

4

1 に答える 1

0

ヒントを使ってこれを行うことができます。ややこのように:

<mapping>
 <class-a>Contract</class-a>
 <class-b>ContractDTO</class-b>
 <field>
   <a>contractor</a>
   <b>contractor</b>
   <a-hint>your.package.Employer, your.package.Employee</a-hint>
   <b-hint>your.DTOpackage.EmployerDTO, your.DTOpackage.EmployeeDTO</b-hint>
 </field>
</mapping>
于 2012-02-22T14:47:58.070 に答える