首页新闻找找看学习计划

hibernate配置一对一出错 外键实体save的时候出问题

0
悬赏园豆:100 [已解决问题] 解决于 2011-12-29 13:28

我有两个表,一个user,一个是shop,shop里面有一个user_id作为外键引用user的主键id,并且在数据表里设置了user_id是unique的,一对一关系直接用hibernate生成的 代码如下:

<one-to-one name="shop" class="dao.pojo.Shop" cascade="all" outer-join="true" constrained="true" >
</one-to-one>

以上是user的配置,以下的是shop的:

 <one-to-one name="user" class="dao.pojo.User" ></one-to-one>

保存的时候的代码:

Shop shop = new Shop( name, type, address, phone, bizHour, bizNum,
bizImg, hygieneNum, hyginenImg);
shop.setUser(user);
shopDao.save(shop);

DAO是hibernate直接生成的,没有改过,在页面调用的时候报错:

Field 'user_id' doesn't have a default value

一对一关系映射后,在shop实体里面没有user_id,只有user,在user实体里有shop。。。。

so_little的主页 so_little | 初学一级 | 园豆:72
提问于:2011-12-23 20:09
< >
分享
最佳答案
0

有没有跟踪一下她生成的sql语句看看。

收获园豆:100
小小刀 | 小虾三级 |园豆:1991 | 2011-12-23 20:20

有 是在hibernate生成的dao里报错 :

public void save(Shop transientInstance) {
log.debug("saving Shop instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

在这里直接跳去catch了

so_little | 园豆:72 (初学一级) | 2011-12-23 20:39

@so_little: 你的id是什么类型?有没有设置自增长之类的属性?

小小刀 | 园豆:1991 (小虾三级) | 2011-12-23 21:02

@小小刀:shop里的 user_id没有设置 user表的主键id设置了自动增长

so_little | 园豆:72 (初学一级) | 2011-12-23 21:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册