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

Java Datanucleus-无法从数字单元格获取文本值,java,excel,datanucleus,Java,Excel,Datanucleus,我想使用DataNucleus读取和写入.xls文件。我在ApachePOI中发现了很多这个问题,但是如果没有必要,我不想直接使用ApachePOI,而不是DataNucleus 因此,我有一个测试类: @Entity @Table(name = "JUSTSTRING") public class JustStringEntity { @Id @Column private Integer id; @Column private String nam

我想使用DataNucleus读取和写入.xls文件。我在ApachePOI中发现了很多这个问题,但是如果没有必要,我不想直接使用ApachePOI,而不是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();
    }
}
如果
JustStringEntity
仅包含
String
属性,则其工作正常。但如果它包含任何数字数据,它就会失败


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

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


虽然我仍然希望它能与原始包装器一起工作,但对于这种特殊情况,可能存在一些bug?

我使用的电子表格可以很好地处理数值(浮点或整数)。是否仅当PK字段为数字时?i、 你试过字符串PK和数字非PK吗?您也尝试过使用长基元而不是长包装器吗?对于基元类型,它是有效的。谢谢,如果你把它作为答案发布,我会接受的。如果
@Id
是一个原始类型上的包装类,它会失败。如果
@Id
是字符串或基元类型,则它可以工作。如果其他字段是包装类,它也可以工作。
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)
    ....