2010-06-18 3 views
2

J'ai une méthode Java que je veux appeler dans ma servlet Jython s'exécutant sur tomcat5. Il ressemble à ceci:Jython java call lève l'exception demandant 2 args quand un seul argument est codé

@SuppressWarnings("unchecked") 
    public School loadByName(String name) { 
     List<School> school; 
     school = getHibernateTemplate().find("from " + getPersistentClass().getName() + " where name = ?", name); 

     return uniqueResult(school); 
    } 

Je l'appelle à l'aide Jython:

foobar = SchoolDAOHibernate.loadByName('University') 

Il renvoie une erreur qui dit loadByName() attend 2 args; eu 1. Quel autre argument pourrait-il rechercher?

Si je tente de créer une instance d'abord comme:

foo = com.dc.sports.dao.hibernate.SchoolDaoHibernate() 
foo.loadByName('University') 

Le premier appel lève une exception en disant:

Aucun constructeur visible pour la classe (com.dc.sports.dao. hibernate.SchoolDaoHibernate)

Je suppose que c'est parce qu'il est un paquet privé:

package com.dc.sports.dao.hibernate; 

... 

@SuppressWarnings("unchecked") 
class SchoolDaoHibernate extends AbstractDaoHibernate<School> implements SchoolDao { 

Alors, comment puis-je obtenir la méthode?

+0

J'ai ajouté un peu plus d'informations sur les raisons pour lesquelles j'ai essayé d'appeler la méthode de manière statique. – Clutch

Répondre

1

Parce que la méthode loadByName n'est pas statique, Jython peut être attendre le premier argument d'être une instance de SchoolDAOHibernate. Si cela a du sens pour votre conception, rendez cette méthode statique.

2

loadByName n'est pas statique. Vous avez besoin d'une instance pour l'appeler.

sdh = SchoolDAOHibernate(...) # ... any args for construction ?? 
sdh.loadByName('Univeristy') # 2 args :-) self (sdh) and 'University' 

plus clair?

Questions connexes