0
com.opencsv 4.1을 사용하고 엔티티 클래스를 CSV 파일로 내보내려고합니다. 문제는이 엔티티 클래스가 다른 클래스를 확장한다는 것입니다. 그래서, 내보낼 때 하위 클래스의 필드 만 가져옵니다.opencsv가 상위 클래스의 속성을 내 보내지 않습니다.
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;
}
}
을 아래
은 csv 파일에을 writting 내 코드입니다
우리 아이 클래스 :
@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 얻을 수 있습니까?
누군가가 도울 수 있다면 정말 고맙게 여길 것입니다.
미리 감사드립니다.