【问题标题】:Dozer map list with annotations带有注释的推土机地图列表
【发布时间】:2017-08-17 10:29:02
【问题描述】:

如何使用推土机和注释正确映射地图

没有列表,一切都很好

推土机版本 6.1.0

http://dozer.sourceforge.net/documentation/collectionandarraymapping.html 如何在注解上呈现 b-hint

@Entity
@Table(name = "PRODUCT_THEME")
@Data
public class ProductTheme implements Serializable {
    @Id
    @GeneratedValue(generator = "PRODUCT_THEME_SEQ", strategy = GenerationType.SEQUENCE)
    @SequenceGenerator(name = "PRODUCT_THEME_SEQ", sequenceName = "PRODUCT_THEME_SEQ", allocationSize = 1)
    @Column(name = "ID", updatable = false, nullable = false)
    @Mapping("id")
    private Integer id;
    @Column(name = "DESCRIPTION", length = 100)
    @Mapping("description")
    private String description;
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "PRODUCT_THEME_IMAGE", joinColumns = { @JoinColumn(name = "THEME_ID", nullable = false, updatable = false) }, inverseJoinColumns = {
                                    @JoinColumn(name = "IMAGE_ID", nullable = false, updatable = false) })

    **@Mapping("imagesList")**

    private List<Images> imagesList;
    @Column(name = "ACTIVE", nullable = false)
    @Mapping("active")
    private Boolean active;
...
}

一切正常,但是当我尝试获取地图列表时,出现错误

不配置xml如何解决这个问题?

Caused by: java.lang.StackOverflowError
    at java.util.AbstractCollection.toString(AbstractCollection.java:454)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.Images.toString(Images.java:15)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.ProductTheme.toString(ProductTheme.java:21)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.Images.toString(Images.java:15)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.ProductTheme.toString(ProductTheme.java:21)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.Images.toString(Images.java:15)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.ProductTheme.toString(ProductTheme.java:21)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.Images.toString(Images.java:15)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.ProductTheme.toString(ProductTheme.java:21)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.Images.toString(Images.java:15)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.ProductTheme.toString(ProductTheme.java:21)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractCollection.toString(AbstractCollection.java:462)
    at java.util.Vector.toString(Vector.java:1000)
    at org.eclipse.persistence.indirection.IndirectList.toString(IndirectList.java:890)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at by.softclub.model.entity.Images.toString(Images.java:15)

【问题讨论】:

    标签: java dozer


    【解决方案1】:

    Lomdok 和 Dozer 的兼容性 @Date (@toString) 出现错误

    【讨论】:

      【解决方案2】:

      为防止 lombok 的 ToString() 递归运行,应排除链接字段。 hashCode() 也一样:

      @Entity
      @Table(name = "PRODUCT_THEME")
      @Data
      @lombok.ToString(exclude="imagesList")
      @lombok.EqualsAndHashCode(exclude="imagesList")
      public class ProductTheme implements Serializable {
          ...
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2012-08-30
        • 2011-09-01
        • 2016-09-13
        • 1970-01-01
        相关资源
        最近更新 更多