2014-09-15 3 views
1

Как создать ИЛИ обновить ForeignCollection в OrmLite?ForeignCollection создать или обновить

Если я пытаюсь просто добавить объект к ForeignCollection, метод add действует как метод create (insert into), но если объект уже существует, я получу ошибку об отсутствии уникального первичного ключа. Я не хочу, чтобы дубликаты отображались с автоинкрементными первичными ключами, так что это нормально, чтобы получить это уведомление.

Если я использую метод обновления, тогда это будет ошибка, если нечего обновлять.

Кажется, что объект foreigncollection не имеет возможности сказать мне, существует ли объект в базе данных.

Итак, единственный способ самостоятельно написать отдельный запрос, посмотреть, существует ли каждый объект и удалить те, которые изменились?

ответ

0

Если вы используете, например:

@DatabaseTable(tableName = "question") 
public class QuestionDb implements Serializable { 

    @ForeignCollectionField(foreignFieldName = "question", eager = true) 
    private ForeignCollection<AnswerDb> answers; 
} 

@DatabaseTable(tableName="answers") 
public class AnswerDb implements Serializable{ 

    @DatabaseField (foreign=true,canBeNull=true,columnName=FIELD_QUESTIONID) 
    private QuestionDb question; 
} 

Вы должны будете использовать функцию createOrUpdate в AnswersDB.

answerYouWantToAdd.setQuestion(yourQuestion); 
answerDao.createOrUpdate(answerYouWantToAdd); 
+0

почему 'foreignFieldName = "вопрос"' вместо 'foreignFieldName = "ответ"' – CQM

+0

это отсылает поле в классе AnswerDB. 'foreignFieldName! = colunmName' –

Смежные вопросы