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を取得するにはどうすればよいですか?
誰かが助けてくれたら本当に感謝します。
ありがとうございます。