我有两个休眠实体:
@Entity
@Table(name = DBConstants.TABLE_PARTNER)
public class Partner extends XWeedEntity {
private static final long serialVersionUID = 5692151244956513381L;
@Id
@Column(name = DBConstants.PARTNER_COL_PARTNER_NUMBER)
private Integer partnerNumber;
@OneToMany(mappedBy = DBConstants.VISIT_PROP_VISITOR)
private List<Visit> visits;
// More fields and properties...
}
@Entity
@Table(name = DBConstants.TABLE_VISIT)
public class Visit extends XWeedEntity {
private static final long serialVersionUID = -8324746049334117579L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = DBConstants.VISIT_COL_ID)
private Integer id;
@ManyToOne
@JoinColumn(name = DBConstants.VISIT_COL_VISITOR, nullable = false)
private Partner visitor;
// More fields and properties...
}
两个DTO实体:
public class PartnerDto extends XWeedEntity {
private static final long serialVersionUID = 5692151244956513381L;
private Integer partnerNumber;
private List<VisitDto> visits;
// More fields and properties...
}
public class VisitDto extends XWeedEntity {
private static final long serialVersionUID = -8324746049334117579L;
private Integer id;
private PartnerDto visitor;
// More fields and properties...
}
我有以下推土机映射:
<mapping map-id="partnerWithCollections" map-empty-string="false" map-null="false">
<class-a>org.xweed.model.app.domain.dbo.Partner</class-a>
<class-b>org.xweed.model.app.domain.dto.PartnerDto</class-b>
<field map-id="visitWithPartner">
<a>visits</a>
<b>visits</b>
</field>
</mapping>
<mapping map-id="partnerBasic" wildcard="false" map-empty-string="false" map-null="false">
<class-a>org.xweed.model.app.domain.dbo.Partner</class-a>
<class-b>org.xweed.model.app.domain.dto.PartnerDto</class-b>
<field>
<a>partnerNumber</a>
<b>partnerNumber</b>
</field>
</mapping>
<mapping map-id="visitWithPartner" map-empty-string="false" map-null="false">
<class-a>org.xweed.model.app.domain.dbo.Visit</class-a>
<class-b>org.xweed.model.app.domain.dto.VisitDto</class-b>
<field map-id="partnerBasic">
<a>visitor</a>
<b>visitor</b>
</field>
</mapping>
问题在于,当我使用&#34; partnerWithCollections&#34;来调用dozer时映射,推土机正在映射合作伙伴访问中的所有访问对象,但是每次访问都有访问者访问它的访问权限,等等,每次访问的访问者属性应该只包含partnerNumber。 / p>
如果我尝试将访问者字段排除在访问之外,那么就可以工作,并且每个访问者的访问都是空的,但由于某种原因,使用map-id无法使用某些具体的合作伙伴映射。
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
这是因为默认情况下,dozer始终映射具有相同名称的属性:
您可以停用此设置&lt; mapping&gt;属性“wildcard = false”。
来自官方文件:
Dozer会自动映射具有匹配属性名称的字段吗?
是。具有匹配属性名称的所有字段都是隐式映射的。这将是非典型用法,但您可以通过设置wilcard =“false”来抑制此行为。
http://dozer.sourceforge.net/documentation/faq.html#auto-property-name
您还可以使用全局配置对所有映射执行此操作:
<configuration>
<wildcard>false</wildcard>
</configuration>
http://dozer.sourceforge.net/documentation/globalConfiguration.html