如何使用 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/