Geben Sie Sicherheit: Die expression von Typ-Liste muss deaktiviert die Konvertierung zu entsprechen Liste<Object[]>
Im bekommen immer eine Art Sicherheit Warnung wenn ich starten will eine Hibernate-Anwendung. Gibt es eine Methode, um loszuwerden, diese ohne Verwendung @SuppressWarnings("unchecked")
?
hier ist mein Code:
Configuration config = new Configuration();
config.addAnnotatedClass(Employee.class);
config.configure("hibernate.cfg.xml");
new SchemaExport(config).create(false, false);
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(config.getProperties()).build();
SessionFactory factory = config.buildSessionFactory(serviceRegistry);
Session session = factory.getCurrentSession();
session.beginTransaction();
Query q = session
.createQuery("SELECT e.empId,e.empName FROM Employee e");
@SuppressWarnings("unchecked")
List<Object[]> list = q.list(); <-- here is the problem!
- Nein, gibt es nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hibernate ist
Session.list()
gibt eine nur, raw -List
.Es ist vollkommen legal Java-syntax um es umwandeln zu einer parametrisierten collection (
List<Object[]>
hier). Aber aufgrund der Tatsache, dass die generischen Typ-infos gelöscht, zur Laufzeit, der compiler wird eine Warnung ausgeben, sagen Sie es nicht garantieren können, diese Form tatsächlich gültig ist.So ist es einfach seine Art dir zu sagen "Hey, du spielst mit dem Feuer hier, ich hoffe, Sie wissen, was Sie tun, weil ich nicht".
In diesem Fall, Sie können nicht alles tun, um diese zu beseitigen Warnung, aber Sie können die Verantwortung explizit zu ignorieren, indem die
@SuppressWarnings
annotation.Nein, es gibt keinen Weg, um es zu entfernen, es sei denn, Sie q machen.Liste() genau eine
List<Object[]>
Können Sie erzwingen, dass der cast um die Warnung Weg zu gehen, sondern ähnlich wie die Unterdrückung der Warnung, es verbirgt sich eine potenzielle Problem, da q.list() ist nicht garantiert, dass die Rückkehr von dem genauen Typ.