java - Hibernate max 查询无法检索数据

标签 java hibernate javadb

我正在使用 Hibernate 4.2.6 和 Java DB 这是我的
RegisterationHelper.java

    org.hibernate.Transaction tx = session.beginTransaction();
    String uid = std.getUserid();
    System.out.println(uid);
    Query query = session.createQuery("FROM university.Student");
    List<Student> student = query.list();
    for(Iterator it= student.iterator(); it.hasNext();) 
    {
       //some code....
        {
            try 
            {
            tx = session.beginTransaction();
            int rgstnum=0;
            Query q = session.createQuery("Select max(registrationnumber)from Student");
            List currentRegNo = q.list();
            rgstnum=(Integer)currentRegNo.get(0)+1;
            std.setRegistrationnumber(rgstnum);
            sc.setRegistrationnumber(rgstnum);
            Serializable objID=session.save(std);
            session.saveOrUpdate(sc);
            tx.commit();
            }
            catch(Exception e)
            {

            }
            //priniting sc.getRegistrationnumber() showing null
           //priniting sc.getCurseid() has data 

RegistrationForm.java

    @ManagedBean
    @RequestScoped
public class RegistrationForm {

public String submitAction() {
            RegistrationHelper rghp = new RegistrationHelper();
            Student std = new Student();
            std.setFirstname(getFirstName().toString());
            std.setLastname(getLastName().toString());
            std.setGender(getGender().toString());
            std.setDob(getDateofBirth());
            std.setAddress(getAddress().toString());
            std.setPhone(getContactNumber().toString());
            std.setEmail(getEmailID().toString());
            std.setUserid(getUserID().toString());
            std.setPassword(getPassword().toString());
            Studentcourse sc = new Studentcourse();
            sc.setCourseid(getCourse().toString());
            String msg = rghp.insertStudent(std, sc);
            if(msg.equals("error"))
            {
                setUserIdError("User Id already exist");
                setUserID("");
                return "Registration";
            }
            else
            {
                return "Success";
            }
        }`

因此,我认为仅查询 Query q = session.createQuery("Select max(registrationnumber)from Student"); 存在问题,该查询无法检索 registrationnumber因为如果删除有关 StudentCourse 的代码并且其他内容在服务器中获取信息:不支持嵌套事务,我就可以将数据存储在 Student 表中日志。
如果我的查询有误或其他问题,请联系我们。

最佳答案

我认为查询中没有问题:消息不支持嵌套事务指的是您打开事务(session.beginTransaction())两次,一开始一次,然后在循环内再一次。尝试删除第二个。

关于java - Hibernate max 查询无法检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238659/

相关文章:

postgresql - 为什么我的 import.sql 文件没有自动运行?

java - 即时更改数据库列类型

java - 在Raspberry Pi上连接到Apache Derby数据库的问题

java - 如何正确引用匿名类声明的对象?

java - 如何让 Hibernate Validator 在第一个字段违规时停止验证?

java - 路径中带有变音符号的 PersistenceException

database - 内存中 Java DB

java - 远程创建加密的 MySQL 备份

java - 使用 SBT 管理构建时启用 Java 断言

java - 获取另一个类中抽象类的对象