值为零时 OpenJPA 实体未更新
OpenJPA Entity not updated when value is zero
我遇到了一个实体问题,该实体的字段映射到数据库中的 INT 类型。问题是,当我将字段更新为一个值时,例如 1337,它正确地保存在数据库中,但当我将它设置为零时情况并非如此。
更具体地说:
- 我的数据库中有一行字段 "record" 是 INT 类型并且具有 NULL 值
- 我将该行检索为托管实体 "anEntity"
- 当我执行 "anEntity.setRecord(1337)" 时,数据库中的记录值发生了更改,但当我执行 "anEntity.setRecord(0)" 时情况并非如此(它在数据库中保持为 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;
}
}
“int
”字段不应在数据库中配置为允许 NULL
。这可能是问题的原因。修复它,它应该可以工作。
如果没有,则在 OpenJPA
中报告错误。
我遇到了一个实体问题,该实体的字段映射到数据库中的 INT 类型。问题是,当我将字段更新为一个值时,例如 1337,它正确地保存在数据库中,但当我将它设置为零时情况并非如此。
更具体地说:
- 我的数据库中有一行字段 "record" 是 INT 类型并且具有 NULL 值
- 我将该行检索为托管实体 "anEntity"
- 当我执行 "anEntity.setRecord(1337)" 时,数据库中的记录值发生了更改,但当我执行 "anEntity.setRecord(0)" 时情况并非如此(它在数据库中保持为 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;
}
}
“int
”字段不应在数据库中配置为允许 NULL
。这可能是问题的原因。修复它,它应该可以工作。
如果没有,则在 OpenJPA
中报告错误。