0

休止状態の saveOrUpdate() 関数に問題があります。Oracle データベースを使用しています。自動生成された主キーを持つ行を挿入する必要があります。次のように、休止状態の注釈でこの ID を構成しました。

モデル.java

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column (name = "blush_id")
private Integer blsId; 

しかし、挿入クエリの実行中に、ID だけが生成されます。saveOrUpdate メソッドは実行されません。

DAO.java

private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory){
    this.sessionFactory = sessionFactory;
} 
public void executeSaveOrUpdate(Object obj){            
    sessionFactory.getCurrentSession().saveOrUpdate(obj);//id generation occurs but the saveOrUpdate(obj) method is not executed
}

エラーや例外はスローされませんが、挿入クエリは実行されず (代わりに、コンソールの 2 行目のようにシーケンスが生成されます)、制御は次のプロセスに進みます。

コンソール:

16:41:55,928 INFO  [STDOUT] Hibernate: select category0_.cat_nbr as cat1_2_, category0_.added_by_name as added2_2_, category0_.added_ts as added3_2_, category0_.cat_dsc as cat4_2_, category0_.last_updt_by_name as last5_2_, category0_.last_updt_ts as last6_2_, category0_.mdse_grp_dsc as mdse7_2_, category0_.mdse_grp_nbr as mdse8_2_ from cvs_category_admin category0_ order by category0_.cat_nbr
16:41:56,037 INFO  [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
16:41:56,084 INFO  [STDOUT] Hibernate: select blushrules0_.blush_id as blush1_1_, blushrules0_.added_by_name as added2_1_, blushrules0_.added_ts as added3_1_, blushrules0_.blush_item_type as blush4_1_, blushrules0_.cat_nbr as cat5_1_, blushrules0_.subcat_nbr as subcat12_1_, blushrules0_.is_active as is6_1_, blushrules0_.is_added as is7_1_, blushrules0_.last_updt_by_name as last8_1_, blushrules0_.last_updt_ts as last9_1_, blushrules0_.sku_nbr as sku10_1_, blushrules0_.status as status1_ from blush_admin_rules blushrules0_ where blushrules0_.status='A'

この問題について私を助けてください..

4

2 に答える 2

0

特に複数のクエリの場合、トランザクションへのコミットの問題でした。

于 2013-02-28T10:46:55.743 に答える
-1

また、セッションをフラッシュする必要があります。以下を saveupdate ステートメントに追加します。

sessionFactory.getCurrentSession().flush()
于 2015-02-17T10:41:08.600 に答える