Hibernate JSF将对象保存到数据库,而不告诉用户这样做

Hibernate JSF将对象保存到数据库,而不告诉用户这样做,hibernate,persistence,Hibernate,Persistence,我正在使用JSF2.2和Hibernate4.3.1 我有这门课 @Named @RequestScoped public class StudentController{ private StudentUtil studentUtil = new StudentUtil(); public List<Student> getStudents(){ return studentUtil.getAllStudents(); } pu

我正在使用JSF2.2和Hibernate4.3.1

我有这门课

@Named
@RequestScoped
public class StudentController{

    private StudentUtil studentUtil = new StudentUtil();

    public List<Student> getStudents(){
        return studentUtil.getAllStudents();
    }

    public void verify(Student student){
        student.setVerified(true);
    }
}
@Named
@请求范围
公共班级学生控制员{
private StudentUtil StudentUtil=new StudentUtil();
公众学生名单{
return studentUtil.getAllStudents();
}
公共无效验证(学生){
student.setVerified(true);
}
}
StudentUtil是我的Hibarnate实用程序类。它获取数据库中学生表中的所有行。在XHTML页面中,我在一个数据表中列出了所有学生

<h:dataTable value="#{studentController.students}" 
             var="student">
    ...
    <h:column>
        <h:form>
            <h:commandButton value="Verify" 
                             action="#{studentController.verify(student)}/>
        </form>
     </h:column>
</h:dataTable>

...

我认为您正在使用附加实体。在这种情况下,任何实体更改都将触发数据库更新


如果您将EJB用作StudentUtil的服务,则所有加载的实体都将自动分离。否则你必须自己拆下它们。

这是一个相当复杂的问题。阅读有关托管和分离实体/对象的更多信息。很抱歉使用错误的标记发布。我想我的对象一直处于管理状态,因为我没有在查询后关闭会话。我使用了
openSession()