私はテーブルがです。スキーマAとシーケンスはスキーマB です。私はテーブルとスキーマの両方の権限を持つユーザーCを使用しています。デュアルからSelect B.sequence.nextval
を実行しているときに値を取得します。しかし、私がobjSession.saveOrUpdate(EntityObject);
を使用しているときは、 NULLをシーケンスに注釈を付けたフィールドに挿入することはできません。以下はコードスニペットです。Hibernate - 別のスキーマのテーブルとシーケンス
ENITY CLASS:
@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;
...
}
はERROR:
Hibernate: select BB_BPXAPP.ROW_ID_SEQ.nextval from dual Hibernate: insert into 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, filedatetime, filesource, X_CLIENTDRUGLIST, xsdversion, BPX_ROW_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) WARN SqlExceptionHelper:144 - SQL Error: 1400, SQLState: 23000 ERROR SqlExceptionHelper:146 - ORA-01400: cannot insert NULL into ("BB_BPE"."DRUGLISTINPUTFILE"."BPX_XML_FILE_ID")
であなたのシーケンスジェネレータは、おそらく機能していません。コードを投稿してください。 –
私はSqlQueryを使用してDualからB.sequence.nextvalを選択して実行し、値を取得できました。私は、Entityクラスの2つの異なるスキーマを使って何か間違っていると思います.Hibernateはそれを理解していますか? –