spring+hibernate事务管理(注解方式),一对多存入数据库的问题

sale表(saleid(标识符),saledate)saleDetail表(saleDetailId(标识符),saleid,goodsid),saleid是关联sal... sale表(saleid(标识符),saledate)

saleDetail表(saleDetailId (标识符),saleid,goodsid),saleid是关联sale表的外键

在执行了saleDAO.save后,sale表能正常插入,saleDetail表也能插入但是saleid字段却是null
例如:
Sale sale = new Sale();
SaleDetail saleDetail = new SaleDetail();

saleDetail.setgoodsid(1);

sale.setSaleDate("2011-4-11");
sale.getsSaleDetails().add(saleDetail);

saleDAO.save();
执行这段代码后,sale和saleDetail表中的数据分别应该是
sale:
saleid saleDate
1 2011-4-11

saleDetail:
saleDetailid saleid goodsid
1 1 1
sale表正常但是saleDetail表却是
saleDetail:
saleDetailid saleid goodsid
1 <null> 1

dao都是用MyEclipse8.5反向生成的,加上了@Transactional注解

spring配置文件中声明了事务管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

初学ssh,不知道哪里有漏掉的步骤,求教
展开
 我来答
zhiaiwangzhe
2011-04-13 · TA获得超过207个赞
知道答主
回答量:64
采纳率:0%
帮助的人:52.1万
展开全部
....上面的都是高手。。。。 楼主 inverse="true" 的意思是关系反转 维护关系的一方交给多的一方了 现在你在一的一方插入数据 是因为你写了级联所以才在SaleDetail. 插入了数据 但是因为Sale是不维护关系的 所以SaleDetail 的saleId为空 程序没有别的问题的话 有两种解决方式 第一种是去掉关系反转 第二种是在多的一段进行插入数据
百度网友42612ce
2011-04-11 · 超过11用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:31.8万
展开全部
嘿嘿~~
么~~一般么用中间件都会有提示(即ALT+/),根据提示显示的单词配置,不懂就查资料,上网下视频看,例如 cascade="all" 级联效果,设个save-update就行了,当然也要看有什么需求哦,有时间和耐心就多试试myeclipse的提示么~~
数据库中在外间处可以设的哦~~注意看表的编辑中的key的去找cascade、none等......
好无聊啊~~刚学完四种关系~~一起用好麻烦~~不能称心如意呀~~吐糟一下~~BYE~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yujingtaojing
2011-04-11 · TA获得超过467个赞
知道小有建树答主
回答量:1108
采纳率:0%
帮助的人:494万
展开全部
可能是hibernate映射文件映射错误
追问
Sale.hbm.xml里一对多的配置

SaleDetail.hbm.xml里关联外键SaleID的配置

少了什么东西吗..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小二变焦冥
2011-04-11 · 超过20用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:54.6万
展开全部
我当时写的时候 比如有个UserNameID,我选择的是数据库自动生成,我用myeclipse生成dao的时候,系统还默认给我配了个UserId(数据库里面没有)也给了我得到这个UserId的方法。我建议你不要手动插入id,试试看,我也不知道对不对。
更多追问追答
追问
你那个userId是联合主键吗?
追答
userId是我在数据表里自己定义的 映射文件中没有关于id的配置

但是在DAO实现类它给我提供了findById方法(还有个findByUserID()的方法)
public User findById(java.lang.Long id) {
log.debug("getting User instance with id: " + id);
try {
User instance = (User) getSession().get("org.bookshop.domain.User", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式