我有两个表,一个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。。。。
有没有跟踪一下她生成的sql语句看看。
有 是在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: 你的id是什么类型?有没有设置自增长之类的属性?
@小小刀:shop里的 user_id没有设置 user表的主键id设置了自动增长