【发布时间】:2013-02-27 10:57:29
【问题描述】:
我在休眠时遇到了 saveOrUpdate() 函数的问题。 我正在使用 Oracle 数据库。我需要使用自动生成的主键插入一行。我在hibernate注解中配置了这个id如下,
Model.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
}
没有抛出错误或异常,但是插入查询没有执行(而是在控制台的第二行生成序列),控制进入下一个进程。
控制台:
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'
请帮我解决这个问题..
【问题讨论】:
-
为什么说“没有生成id”?您是否有错误消息或一些日志明确显示?您需要提供更多详细信息。
-
@ben75 我已经编辑了问题,如果需要添加其他内容,请告诉我。
-
为什么说“插入查询未执行”?因为你没有看到插入日志?插入在提交时执行。因此,看看您如何配置交易会很有趣。
-
@ben75 我的表中没有新条目,因此我说插入语句没有被执行。
-
插入在提交时执行。因此,看看您如何配置交易会很有趣。
标签: hibernate annotations