Is there anything I could do to help the patch along? Would trying the patch and vouching for it help... anything like that?
The only fix without changes is to @Override the methods in all my interfaces and that will drive me nuts (wish I had interns...). Thank you for the quick reply. Clinton Begin wrote: > > Interface inheritance is not yet supported. There's a Jira ticket with a > patch submitted, here: > > http://issues.apache.org/jira/browse/IBATIS-655 > > Clinton > > On Thu, Dec 10, 2009 at 11:23 AM, Soks86 > <michael.chrostow...@gmail.com>wrote: > >> >> Hi, >> >> I've been switching my project over to iBATIS from a pretty complete >> Hibernate project. I've run into an issue with how the iBATIS >> configuration >> seems to look up mapped methods. I'm currently using Beta 5 since my >> Maven >> isn't seeing repo2.maven.org/org/... for some reason. I have an interface >> dao as such: >> >> public interface Dao<T> { >> void delete(T arg); >> void save(T arg); >> void update(T arg); >> T load(T arg); >> } >> >> then I have another interface which extends this >> >> public interface SomeTypeDao extends Dao<SomeType> { >> SomeType loadBySomething(String arg); >> } >> >> and finally my implementation: >> >> public class IbatisSomeTypeDao implements SomeTypeDao { >> void delete(SomeType arg) { >> SqlSession session = sessionFactory.openSession(); >> try { >> SomeTypeDao dao = session.getMapper(SomeTypeDao.class); >> dao.delete(arg); >> session.commit(); >> } finally { >> session.close(); >> } >> //... other code omitted but present in actual code >> } >> >> My mapping file is for the namespace of SomeTypeDao and that is the only >> mapped interface or class from the three I posted above. >> >> Now when I call IbatisSomeTypeDao.delete(arg) instead of finding my >> mapped >> interface (SomeTypeDao.delete()) iBATIS seems to look for delete() in my >> Dao<T> class instead and thus it looks for a mapping for Dao<T> (which >> doesn't exist) and then I get this exception: >> >> java.lang.IllegalArgumentException: Mapped Statements collection does not >> contain value for com.icarus.common.dao.Dao.delete >> at >> >> org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:366) >> at >> >> org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:312) >> at >> >> org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:131) >> at >> org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:41) >> at >> org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:18) >> at $Proxy1.delete(Unknown Source) >> >> >> Am I missing something here? It would seem to me that this is a >> limitation >> of iBATIS' configuration class. Shouldn't it first look for a mapping for >> SomeTypeDao and find my mapping? I do know for a fact that if I call >> SomeTypeDao.loadBySomething (method that isn't in Dao<T> generic type) >> then >> the Configuration seems to find the appropriate mapping and doesn't >> complain. However any method that was inherited by the interface is >> mapped >> to the parent interface it seems. >> >> Ideas? Help? >> >> Thanks. >> -- >> View this message in context: >> http://old.nabble.com/Issue-with-Interface-Mapper-that-Extends-an-Interface-itself-tp26732131p26732131.html >> Sent from the iBATIS - User - Java mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org >> For additional commands, e-mail: user-java-h...@ibatis.apache.org >> >> > > -- View this message in context: http://old.nabble.com/Issue-with-Interface-Mapper-that-Extends-an-Interface-itself-tp26732131p26734289.html Sent from the iBATIS - User - Java mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org For additional commands, e-mail: user-java-h...@ibatis.apache.org