java - 如何使用 Java 和 Hibernate 从我的数据库打印整个表?

标签 java hibernate

如何使用 Java 和 Hibernate 从我的数据库中打印出整个表格及其内容?

到目前为止,我的代码只打印了一行我需要的信息。它只打印作者:

package models;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import dao.HibernateDataDAO;
import hibernate.Books;

public class TestModel {
    HibernateDataDAO data;
    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public void test() {
        System.out.println("Testing hibernate");
        //This Books is just a test, in the real implementation it will be added by the user.
        Books books = new Books();

        books.setTitle("A Game of Thrones");
        books.setAuthor("George RR Martin");

        data.insertBooks(books);

        Session session = sessionFactory.openSession();
        session.beginTransaction();

        books = (Books) session.get(hibernate.Books.class, 1);
        System.out.println(books.getAuthor());


        //int id = 3;
        //We set this as 'increment' so that keys are set by database and not by users.
        //data.deleteBooks(books, id);
    }

    public HibernateDataDAO getData() {
        return data;
    }

    public void setData(HibernateDataDAO data) {
        this.data = data;
    }   
}

我的表名为书籍。其中有 3 列:booksKey、title 和 author。 booksKey 是一个整数,title/author 是字符串。如何打印整个表格,以便打印出所有行的信息?

我尝试修改上面的代码并执行此操作,但是没有打印任何内容:

    Query query = session.createSQLQuery("select *from books");
    List<Books> list = query.list();
    for(Books test: list) {
        System.out.println(test.getAuthor());
    }

如果有人能帮忙——最好是告诉我要添加/修复什么代码,那就太棒了。我根本想不通!

hibernate 数据道:

package dao;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.HibernateException;
import org.hibernate.Session;

import hibernate.Books;
import hibernate.Music;
import hibernate.Contacts;
import hibernate.Movies;

//DAO = data access object.
public class HibernateDataDAO {
    private SessionFactory sessionFactory;
    private Transaction transaction;

    public void insertBooks(Books books) {
        Session session = sessionFactory.openSession();

        try {
            transaction = session.beginTransaction();
            session.save(books);
            transaction.commit();
        } 
        catch (Exception e) {
             if (transaction != null) transaction.rollback();
             throw e;
        }
        finally {
             session.close();
        }
    }

    public void deleteBooks(Books books, int booksKey){
        Session session = sessionFactory.openSession();
        try{
            transaction = session.beginTransaction();
            Object persistentInstance = session.load(hibernate.Books.class, booksKey);
            if (persistentInstance != null) {
                session.delete(persistentInstance);
            }
            transaction.commit();
        }catch(HibernateException e){
            if(transaction!= null) transaction.rollback();
            e.printStackTrace();
        }
        finally{
            session.close();
        }
    }

    public void insertMusic(Music music) {
        Session session = sessionFactory.openSession();

        try {
            transaction = session.beginTransaction();
            session.save(music);
            transaction.commit();
        } 
        catch (Exception e) {
             if (transaction != null) transaction.rollback();
             throw e;
        }
        finally {
             session.close();
        }
    }

    public void deleteMusic(Music music, int musicKey){
        Session session = sessionFactory.openSession();
        try{
            transaction = session.beginTransaction();
            Object persistentInstance = session.load(hibernate.Music.class, musicKey);
            if (persistentInstance != null) {
                session.delete(persistentInstance);
            }
            transaction.commit();
        }catch(HibernateException e){
            if(transaction!= null) transaction.rollback();
            e.printStackTrace();
        }
        finally{
            session.close();
        }
    }

    public void insertMovies(Movies movies) {
        Session session = sessionFactory.openSession();

        try {
            transaction = session.beginTransaction();
            session.save(movies);
            transaction.commit();
        } 
        catch (Exception e) {
             if (transaction != null) transaction.rollback();
             throw e;
        }
        finally {
             session.close();
        }
    }

    public void deleteMovies(Movies movies, int movieKey){
        Session session = sessionFactory.openSession();
        try{
            transaction = session.beginTransaction();
            Object persistentInstance = session.load(hibernate.Movies.class, movieKey);
            if (persistentInstance != null) {
                session.delete(persistentInstance);
            }
            transaction.commit();
        }catch(HibernateException e){
            if(transaction!= null) transaction.rollback();
            e.printStackTrace();
        }
        finally{
            session.close();
        }
    }

    public void insertContacts(Contacts contacts) {
        Session session = sessionFactory.openSession();

        try {
            transaction = session.beginTransaction();
            session.save(contacts);
            transaction.commit();
        } 
        catch (Exception e) {
             if (transaction != null) transaction.rollback();
             throw e;
        }
        finally {
             session.close();
        }
    }

    public void deleteContacts(Contacts contacts, int contactKey){
        Session session = sessionFactory.openSession();
        try{
            transaction = session.beginTransaction();
            Object persistentInstance = session.load(hibernate.Contacts.class, contactKey);
            if (persistentInstance != null) {
                session.delete(persistentInstance);
            }
            transaction.commit();
        }catch(HibernateException e){
            if(transaction!= null) transaction.rollback();
            e.printStackTrace();
        }
        finally{
            session.close();
        }
    }

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }       
}

最佳答案

试试这个:

Criteria criteria = session.createCriteria(Books.class);
List<Books> list = criteria.list();
for(Books test: list) {
    System.out.println(test.getBooksKey + " " + test.getAuthor() + " " + test.getTitle());
}

如果您有任何错误,请告诉我。

关于java - 如何使用 Java 和 Hibernate 从我的数据库打印整个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172836/

相关文章:

java - 来自数据库的 Hibernate 字段中的 transient

oracle - JBoss EAP 6.x 在主键上带有 Hibernate Oracle 序列重复值

java - JPA 通过缺少大小为零的集合项与 Group 进行左外连接

java - 接收导出 XML 映射时无法从 BOOLEAN 单元格获取 NUMERIC 值

java - 如何从我的 Java 应用程序运行 Java 应用程序?

java - 如何使用静态 block 初始化spring hibernate查询功能

java - 有人可以告诉我代码中的错误吗?

java - 字符串文字是否有资格进行垃圾回收。以这种方式?

java - 一个单词在一个TXT文件中出现了多少次

java - 无法用 Java 解密 AES-256 GCM