Примеры ORMLite для Android не компилируются - PullRequest
7 голосов
/ 25 ноября 2011

Я пытался работать с примером HelloAndroid для ORMLite , но не смог успешно скомпилировать.У меня проблема с классом DatabaseHelper.В частности, метод getDao():

/**
* Returns the Database Access Object (DAO) for our SimpleData class. 
* It will create it or return the cached value.
*/
public Dao<SimpleData, Integer> getDao() throws SQLException {
  if (simpleDao == null) {
    simpleDao = getDao(SimpleData.class);
  }
  return simpleDao;
}

Вот ошибка времени компиляции, которую я получаю:

Параметры типа D не могут быть определены;Не существует уникального максимального экземпляра для переменной типа D с верхними границами com.j256.ormlite.dao.Dao, com.j256.ormlite.dao.Dao

Ответы [ 2 ]

7 голосов
/ 06 марта 2012

Я получил аналогичную ошибку при попытке построить мой проект ormlite с использованием Netbeans:

Компиляция 15 исходных файлов в ~ / NetBeansProjects / Main / build / classes Main.java:74: введите параметрыD не может быть определено;Не существует уникального максимального экземпляра для переменной типа D с верхними границами com.j256.ormlite.dao.Dao, com.j256.ormlite.dao.Dao pcDao = DaoManager.createDao (connectionSource, PC.class);

Из-за комментариев я переключил свою платформу Java с OpenJDK 1.6 на Oracle JDK 1.7.0_02, и это решило проблему.

0 голосов
/ 25 ноября 2011

Мое решение:

public class HelloAndroid extends OrmLiteBaseActivity<DatabaseHelper>
{
    private final String LOG_TAG = getClass().getSimpleName();

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Log.i(LOG_TAG, "creating " + getClass() + " at " + System.currentTimeMillis());
    TextView tv = new TextView(this);
        doSampleDatabaseStuff("onCreate", tv);
        setContentView(tv);
    }

    /**
     * Do our sample database stuff.
     */
     private void doSampleDatabaseStuff(String action, TextView tv)
     {
         // get our dao
         RuntimeExceptionDao<SimpleData, Integer> simpleDao = getHelper().getSimpleDataDao();
         // query for all of the data objects in the database
         List<SimpleData> list = simpleDao.queryForAll();
         // our string builder for building the content-view
         StringBuilder sb = new StringBuilder();
         sb.append("got ").append(list.size()).append(" entries in ").append(action).append("\n");

         // if we already have items in the database
         int simpleC = 0;
         for (SimpleData simple : list)
         {
             sb.append("------------------------------------------\n");
             sb.append("[").append(simpleC).append("] = ").append(simple).append("\n");
             simpleC++;
         }
         sb.append("------------------------------------------\n");
         for (SimpleData simple : list)
         {
             simpleDao.delete(simple);
             sb.append("deleted id ").append(simple.id).append("\n");
             Log.i(LOG_TAG, "deleting simple(" + simple.id + ")");
             simpleC++;
         }

         int createNum;
         do
         {
             createNum = new Random().nextInt(3) + 1;
         }
         while (createNum == list.size());
         for (int i = 0; i < createNum; i++)
         {
             // create a new simple object
             long millis = System.currentTimeMillis();
             SimpleData simple = new SimpleData(millis);
             // store it in the database
             simpleDao.create(simple);
             Log.i(LOG_TAG, "created simple(" + millis + ")");
             // output it
             sb.append("------------------------------------------\n");
             sb.append("created new entry #").append(i + 1).append(":\n");
             sb.append(simple).append("\n");
             try 
             {
                 Thread.sleep(5);
             }
             catch (InterruptedException e)
             {
                 // ignore
             }
         }
         tv.setText(sb.toString());
         Log.i(LOG_TAG, "Done with page at " + System.currentTimeMillis());
     }
}
...