当值为零时,OpenJPA实体不会更新

时间:2017-07-03 06:42:23

标签: jpa entity openjpa

我的实体有一个问题,它在DB中有一个映射到INT类型的字段。问题是,当我将字段更新为某个值(例如1337)时,它正确地保留在数据库中,但当我将其设置为零时却不是这样。

更具体一点:

  • 我的数据库中有一行,其中“记录”字段为INT类型且值为
  • 我将该行检索为托管实体“anEntity”
  • 当我执行“anEntity.setRecord(1337)”时,记录值在DB中更改,但当我执行“anEntity.setRecord(0)”时却不是这样(它在DB中保持为NULL)。

有没有办法解决它?

一些代码,更新的代码:

@Stateless
public class AClass {

    @EJB
    ARepository arepository;

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public void produceOutgoingMessage(int idOfOutputToProduce) {
        AnEntity anEntity = arepository.find(idOfOutputToProduce);
        //...
        doSomething(anEntity);
    }

    private void doSomething(AnEntity anEntity) {
        //...
        anEntity.setRecord(0); // record stays NULL in DB
        anEntity.setRecord(1337); // record is correctly set in DB
    }
}

实体:

@Entity
@Table(name = "MY_TABLE")
public class AnEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "C_I_IDF")
    private Long id;

    @Column(name = "N_I_RECORD")
    private int record;

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getRecord() {
        return record;
    }

    public void setRecord(int record) {
        this.record = record;
    }
}

1 个答案:

答案 0 :(得分:0)

" int"永远不应将字段配置为允许数据库中的NULL。这可能是问题的原因。修复它,它应该工作。

如果没有,则报告OpenJPA中的错误。