【发布时间】:2017-07-17 14:26:49
【问题描述】:
我的表是 Schema A 和 Schema B 中的序列。我正在使用对表和架构都具有权限的用户 C。当我从 dual 运行 Select B.sequence.nextval 时,我得到了价值。但是当我使用objSession.saveOrUpdate(EntityObject); 时,它说不能将 NULL 插入到带有序列注释的字段中。下面是代码sn-p。
实体类:
@Entity
@Table(name="BB_BPE.DRUGLISTINPUTFILE")
public class DrugListInputFileEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name="DL_DRUGLISTINPUTFILE_ROW_ID_GENERATOR", sequenceName="BB_BPXAPP.ROW_ID_SEQ", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="DL_DRUGLISTINPUTFILE_ROW_ID_GENERATOR")
@Column(name="BPX_ROW_ID")
private long bpxRowId;
...
}
错误:
休眠:从双休眠中选择 BB_BPXAPP.ROW_ID_SEQ.nextval: 插入 BB_BPE.DRUGLISTINPUTFILE (BC_STATUS, BPX_ACTION_FLAG, BPX_CREATED_DATE、BPX_CREATED_USER、BPX_DUP_IND、BPX_HASH、BPX_ID、 BPX_MODIFIED_DATE、BPX_MODIFIED_USER、BPX_ORIGINAL_ROW_ID、BPX_SET_ID、 BPX_SOURCE、BPX_STATUS、BPX_VERSION、BPX_XML_FILE_ID、 DRUGLISTINPUTFILE_ID、文件日期时间、文件源、X_CLIENTDRUGLIST、 xsdversion, BPX_ROW_ID) 值 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) WARN SqlExceptionHelper:144 - SQL 错误: 1400, SQLState: 23000 错误 SqlExceptionHelper:146 - ORA-01400: 不能 将 NULL 插入 ("BB_BPE"."DRUGLISTINPUTFILE"."BPX_XML_FILE_ID")
【问题讨论】:
-
您的序列生成器可能无法正常工作。请发布它的代码。
-
我使用 SqlQuery 从 Dual 中运行了 select B.sequence.nextval,它能够获取值。我认为在 Entity 类中使用 2 个不同的模式有问题,Hibernate 明白吗?
标签: hibernate