Ormlite - wywołanie konstruktora nie powiodło się, gdy BaseDaoImpl jest rozszerzony
Mam następujące tabele -
<code>@DatabaseTable(tableName="b", daoClass=B_DaoImpl.class) public class B { @DatabaseField public String b1 ; public B(){ // For Ormlite } } @DatabaseTable(tableName="a", daoClass=A_DaoImpl.class) public class A { @DatabaseField public String a1 ; @DatabaseField(foreign=true) public B b; public A(){ // For Ormlite } } </code>
Dla tych tabel powiązane Dao i DaoImpl są następujące
<code>public interface A_Dao extends Dao<A, String>{} public interface B_Dao extends Dao<B, String>{} public class B_DaoImpl extends BaseDaoImpl<User, String> implements B_Dao { public B_DaoImpl(ConnectionSource connectionSource) throws SQLException { super(connectionSource, B.class); } } public class A_DaoImpl extends BaseDaoImpl<User, String> implements A_Dao { public A_DaoImpl(ConnectionSource connectionSource) throws SQLException { super(connectionSource, A.class); } } </code>
Pomocnik bazy danych jest następujący:
<code> public class DatabaseHelperImpl extends OrmLiteSqliteOpenHelper implements DatabaseHelper { private A_DaoImpl aDao = null; private B_DaoImpl bDao = null; public B_DaoImpl getBDao() throws SQLException { if (bDao == null) { bDao = getDao(B.class); } return bDao; } public A_DaoImpl getA() throws SQLException { if (aDao == null ) { aDao = getDao(A.class); } return aDao; } } </code>
Teraz, gdy próbuję zadzwonić -
<code>ADao aDao = databaseHelper.getA(); </code>
to błąd z następującym błędem:
<code> Could not call the constructor in class class A_DaoImpl </code>
Teraz, jeśli nie mam klucza foriegn w A - tj. Jeśli A nie zawierapubliczny B b, to działa dobrze. Czy jest tu coś, czego mi brakuje?
Z góry bardzo dziękuję.