Mysql OneToMany关系未更新,而是插入

Mysql OneToMany关系未更新,而是插入,mysql,spring,hibernate,spring-mvc,Mysql,Spring,Hibernate,Spring Mvc,假设有一个用户表和一个教育表 用户表包含:userId、name、age (用户到教育=一对多关系。) 现在我第一次添加用户。 然后我添加了同一用户的教育细节 当我打算更新时,用户教育会详细说明其显示“给定对象具有空标识符” 当我要合并时,显示唯一的约束冲突 @Override public int saveOrUpdateProblem(Educationdetail educationdetail) { try{ sessionFactory.

假设有一个用户表和一个教育表

用户表包含:userId、name、age

(用户到教育=一对多关系。)

现在我第一次添加用户。 然后我添加了同一用户的教育细节

当我打算更新时,用户教育会详细说明其显示“给定对象具有空标识符”

当我要合并时,显示唯一的约束冲突

@Override
    public int saveOrUpdateProblem(Educationdetail educationdetail) {
        try{
            sessionFactory.getCurrentSession().merge(educationdetail);
        return 1;
        }catch(Exception ex){
            sessionFactory.getCurrentSession().update(educationdetail);
        return 0;
        }   
    }
请告诉我我犯了什么错误。 在调试期间,我可以看到教育的集合,但在更新详细信息时,教育对象没有标识符。
谢谢。

将代码张贴在更新的地方。是否使用了sessionFactory.getCurrentSession().save(educationdetail);一开始?是的。您能告诉我如何获取唯一约束冲突(由于保存具有相同程度和流的对象)错误的对象的id吗?请发布您尝试保存的对象。保存/更新后是否使用了flush()或transaction commit?否我在接口级别使用的是
@Transactional(propagation=propagation.REQUIRED)
。因此,将调用自动刷新并关闭会话。试图保存的对象示例:[userId---educationDetailId---standard---stream---percentage---startDate---endDate]1)**2427---5---BE/BTECH---Electronics---43---2016-08-02---2016-08-06**2)**2427---5---BE/BTECH Electronics---43---2016-08-04---2016-08-07**看我已经更改了日期。第一次保存,第二次需要更新。感谢您的热心帮助@JustasPost更新代码。您是否使用了sessionFactory.getCurrentSession().save(educationdetail);一开始?是的。您能告诉我如何获取唯一约束冲突(由于保存具有相同程度和流的对象)错误的对象的id吗?请发布您尝试保存的对象。保存/更新后是否使用了flush()或transaction commit?否我在接口级别使用的是
@Transactional(propagation=propagation.REQUIRED)
。因此,将调用自动刷新并关闭会话。试图保存的对象示例:[userId---educationDetailId---standard---stream---percentage---startDate---endDate]1)**2427---5---BE/BTECH---Electronics---43---2016-08-02---2016-08-06**2)**2427---5---BE/BTECH Electronics---43---2016-08-04---2016-08-07**看我已经更改了日期。第一次保存,第二次需要更新。谢谢你的热心帮助@Justas
@JoinColumn(name = "userId", referencedColumnName = "userid")
@ManyToOne(optional = false)
private Users userId;
@Override
    public int saveOrUpdateProblem(Educationdetail educationdetail) {
        try{
            sessionFactory.getCurrentSession().merge(educationdetail);
        return 1;
        }catch(Exception ex){
            sessionFactory.getCurrentSession().update(educationdetail);
        return 0;
        }   
    }