Pour un projet, j'essaie de créer une classe dans laquelle je peux extraire des données d'une base de données en mode hibernation.Java - création d'une référence statique à une méthode non statique
Dans cette classe, j'essaie également de faire une liste d'objets créés avec les données extraites de la base de données via un DAO. Mais quand j'essaie de parcourir la liste, eclipse m'avertit que j'essaie de faire une référence statique à une méthode non statique. J'ai eu l'impression que si vous utilisez une instance d'un objet (opérateur op dans ce cas) qui n'est pas statique et qui ne se réfère pas à une méthode statique, cela pourrait fonctionner. Pourquoi cela ne fonctionne-t-il pas et comment puis-je le réparer? Ce qui me rend particulièrement confus, c'est que l'exemple de code donné par l'enseignant fait la même chose mais fonctionne bien.
package Client.DAO;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class mainTest {
private static EntityManagerFactory entityManagerFactory;
public static void main(String[] args) {
EntityManager em = null;
try {
entityManagerFactory = HibernateUtil.getEntityManagerFactory();
em = entityManagerFactory.createEntityManager();
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
operatorDAO dao = new operatorDAOImpl(em);
List<operator> operators = dao.findAll();
for (operator op : operators) {
System.out.print("Id: " + operator.getID());// <-- This doesnt work
System.out.print(", First Name: " + operator.getName()); // <-- This doesnt work
}
}
}
Pour référence, code d'exemple de travail. Attention: Long
package nl.hu.ict;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import nl.hu.ict.dao.HibernateUtil;
import nl.hu.ict.dao.LecturerDao;
import nl.hu.ict.dao.LecturerDaoHibImpl;
import nl.hu.ict.model.Lecturer;
public class MyHibernateTest {
private static EntityManagerFactory entityManagerFactory;
public static void main(String[] args) {
// get the Hibernate - JPA entityManager
EntityManager em = null;
try {
entityManagerFactory = HibernateUtil.getEntityManagerFactory();
em = entityManagerFactory.createEntityManager();
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
// get the program (not necessary)
// MyHibernateTest test = new MyHibernateTest();
LecturerDao lectDao = new LecturerDaoHibImpl(em);
Integer id;
// handle the database actions
// list all lecturers
List<Lecturer> lecturers = lectDao.findAll();
for (Lecturer lecturer : lecturers) {
System.out.print("Id: " + lecturer.getID());
System.out.print(", First Name: " + lecturer.getFirstName());
System.out.println(", Last Name: " + lecturer.getLastName());
System.out.println(", Last Name: " + lecturer.getLastName());
}
// add an lecturer
Lecturer lect = new Lecturer();
lect.setFirstName("Bill");
lect.setLastName("Pianoman");
lectDao.persist(lect);
// get the id of the added lecturer
id = lect.getID();
// list to view changes
lecturers = lectDao.findAll();
for (Lecturer lecturer : lecturers) {
System.out.print(lecturer);
}
// change a lecturer
// find find it again
lect = lectDao.findById(id);
// change it
lect.setFirstName("Billy");
lectDao.update(lect);
// list to view changes
lecturers = lectDao.findAll();
for (Lecturer lecturer : lecturers) {
System.out.print(lecturer);
}
// delete a lecturer
// find it again
lect = lectDao.findById(id);
// delete it
lectDao.delete(lect);
// list to view changes
lecturers = lectDao.findAll();
for (Lecturer lecturer : lecturers) {
System.out.print(lecturer);
}
em.close();
System.out.println("-- einde --");
}
}
Pourriez-vous penser à un exemple radicalement plus facile? – Andremoniy
Vous n'utilisez pas l'objet, vous utilisez la classe. operator.getID() devrait être op.getID() –