我有一个要在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'
更清晰?