我有一个要在tomcat5上运行的Jython servlet中调用的Java方法。看起来像这样:

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

        return uniqueResult(school);
    }


我在Jython中使用:

foobar = SchoolDAOHibernate.loadByName('University')


抛出错误,提示loadByName()需要2个参数;得到了1。
它还能寻找什么其他论点?

如果我尝试首先创建一个实例,例如:

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


第一次调用将引发一个异常,说:


  没有可见的类构造函数(com.dc.sports.dao.hibernate.SchoolDaoHibernate)


我假设这是因为它是私有软件包:

package com.dc.sports.dao.hibernate;

...

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


那么我该如何使用该方法呢?

最佳答案

loadByName不是静态的。
您需要一个实例来调用它。

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


更清晰?

10-08 02:28