Datanucleus - 无法从数字单元格中获取文本值

时间:2015-02-02 09:08:25

标签: java excel datanucleus

我想使用DataNucleus来读取和编写.xls文件。我在Apache POI中发现了很多这个问题,但如果没有必要,我不想直接使用Apache POI,而不是DataNucleus。

所以,我有一个测试类:

@Entity
@Table(name = "JUSTSTRING")
public class JustStringEntity {

    @Id
    @Column
    private Integer id;

    @Column
    private String name;
}

还有一些方法,将它写入.xls,然后从那里读取。

public void exportSomeToXls(){
    JustStringEntity e1 = new JustStringEntity(); e1.setId(1); e1.setName("Mr. Salieri");
    JustStringEntity e2 = new JustStringEntity(); e2.setId(2); e2.setName("Thomas Angelo");

    EntityTransaction tx = xlsManager.getTransaction();
    tx.begin();
    xlsManager.persist(e1);
    xlsManager.persist(e2);
    tx.commit();
}

public void getSomeFromXls(){
    try {
        List<JustStringEntity> entities = xlsManager.createQuery("SELECT j from JustStringEntity j", JustStringEntity.class).getResultList();

        System.out.println("SIZE: " + entities.size());

        for (JustStringEntity j : entities) {
            System.out.println(j.getId());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

它将数据成功写入.xls文件。但是当我尝试阅读它时,我收到了以下错误:

java.lang.IllegalStateException: Cannot get a text value from a numeric cell
    at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:637)
    at org.apache.poi.hssf.usermodel.HSSFCell.getRichStringCellValue(HSSFCell.java:714)
    ....

如果JustStringEntity仅包含String属性,则可以正常工作。但如果它包含任何数字数据,则会失败。

有没有简单的方法来解决这个问题(不直接使用Apache POI)?

1 个答案:

答案 0 :(得分:0)

尝试将Long / Integer更改为long / int(原语)。

我仍然期望它能够与原始包装器一起使用,但是对于那个特定的情况可能有/有一些错误吗?