2017-11-29 28 views
0

私はcom.opencsv 4.1を使用し、エンティティクラスをcsvファイルにエクスポートします。 問題は、このエンティティクラスが別のクラスを拡張していることです。だから、私はそれをエクスポートすると、私は子クラスのフィールドだけを取得します。以下はopencsvは親クラスの属性をエクスポートしません

csvファイルに足すための私のコードです:

List<ActiveSubstance> activeSubstances = getActiveSubstances(); 
    File reportFile = new File("activeSubstances.csv"); 
    Writer writer = new PrintWriter(reportFile); 


    StatefulBeanToCsv<ActiveSubstance> beanToCsv = new StatefulBeanToCsvBuilder<ActiveSubstance>(writer) 
     .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER) 
     .withSeparator(CSVWriter.DEFAULT_SEPARATOR) 
     .build(); 
    beanToCsv.write(activeSubstances); 
    writer.close(); 

私が手にエクスポートされたファイルは以下の行があります。

,,false,[email protected] 

私の親クラスを:

@MappedSuperclass 
public abstract class AbstractEntity { 

    @Id 
    @DiffIgnore 
    @Column(name = "UUID") 
    @CsvBindByName(column = "UUID") 
    @CsvBindByPosition(position = 0) 
    private String uuid; 

    @Column(name = "CODE") 
    @CsvBindByName(column = "CODE") 
    @CsvBindByPosition(position = 1) 
    private String code; 

public String getUuid() { 
    return uuid; 
    } 

    public void setUuid(String uuid) { 
    this.uuid = uuid; 
    } 

    public String getCode() { 
    return code; 
    } 

    public void setCode(String code) { 
    this.code = code; 
    } 
} 

私の子供のクラス:

@Entity 
@Table(name = "T_ACTIVE_SUBSTANCE") 
public class ActiveSubstance extends AbstractEntity { 

    @Column(name = "CRITICAL") 
    @CsvBindByName(column = "CRITICAL") 
    @CsvBindByPosition(position = 3) 
    private Boolean critical; 

    @ManyToOne 
    @JoinColumn(name = "ACTIVE_SUBSTANCE_CLASS_ID") 
    @CsvBindByName(column = "ACTIVE_SUBSTANCE_CLASS_ID") 
    @CsvBindByPosition(position = 4) 
    private ActiveSubstanceClass activeSubstanceClass; 

/** 
    * Default constructor 
    */ 
    public ActiveSubstance() { 
    } 

    public Boolean getCritical() { 
    return critical; 
    } 

    public void setCritical(Boolean critical) { 
    this.critical = critical; 
    } 

    public ActiveSubstanceClass getActiveSubstanceClass() { 
    return activeSubstanceClass; 
    } 

    public void setActiveSubstanceClass(ActiveSubstanceClass activeSubstanceClass) 
    { 
    this.activeSubstanceClass = activeSubstanceClass; 
    } 
} 

親の属性がエクスポートされないのはなぜですか?どうすれば入手できますか? また、オブジェクトではなくCSVファイル内のactiveSubstanceClass.toStringを取得するにはどうすればよいですか?

誰かが助けてくれたら本当に感謝します。

ありがとうございます。

答えて

0

抽象クラスのフィールドをプライベートではなく保護して、子クラスから見えるようにしましたか?

関連する問題