@ElementCollection для сохранения набора <Long> - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть следующая ElementCollection на моем объекте

public class MyObject {

@ElementCollection(targetClass=Long)
Set<Long> otherIds

}

Это должно создать таблицу со значениями

myObj_id   other_id
1            2
1            3
2            4
3            4

Но это только создает всплывающие строки

 myObj_id   other_id
    1            2
    1            3
    2            4

Что-то заставляет меня думать, что это не позволяет повторять значение '4' в столбце other_id. Но я не уверен, почему, я попытался выполнить следующие действия:

  • Очистка сессии перед закрытием
  • Фиксация транзакции
  • Использование cascadeType SAVE_UPDATE
  • Попытка использования списка вместо Set
  • Пробная установка FetchType.EAGER

    Что я пропустил?

Вот код сохранения

public MyObj createOrSave(MyObj obj) {
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    try {


      session.beginTransaction();
      session.saveOrUpdate(obj);
      session.getTransaction().commit();
    } catch (RuntimeException e) {

      session.getTransaction().rollback();
      throw e;
    } finally {
      if (session != null && session.isOpen()) {
        session.close();

      }
    }

    return obj;
  }

Если посмотреть на структуру таблицы, это создает оба myObj_id и other_id в качестве первичных ключей, это проблема?

Я добавил больше журналов, и похоже, что перед вторым сохранением сущности id для other_id равен нулю.Не уверен, что это значит, но кажется странным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...