@OrderColumn не может отсортировать массив по порядку вставки - PullRequest
0 голосов
/ 26 февраля 2019

Нужен ArrayList для хранения объектов в порядке их сохранения в базе данных.Использование @OrderColumn для достижения этой цели, но по какой-то причине не удается отсортировать данные по порядку.

Следующий тест сохраняет 2 объекта и пытается получить объекты в порядке убывания (см. Последнюю строку), что не удалось.

Watching.class

  @ManyToMany(cascade = CascadeType.ALL,
      targetEntity = Ticker.class,
      fetch = FetchType.LAZY)
  @JoinTable(name="watching_ticker",
      joinColumns = @JoinColumn(name="watching_id"),
      inverseJoinColumns= @JoinColumn(name="ticker_id"))
  @OrderBy("id desc")
  private List<Ticker> tickers;

...

Ticker.class
  @JsonIgnore
    @ManyToMany
    @JoinTable(name ="watching_ticker",
        joinColumns = @JoinColumn(name ="ticker_id"),
        inverseJoinColumns = @JoinColumn(name = "watching_id"))
  protected Set<Watching> watchings;

..

Tester

Account account;
AccountService accountService;
    Ticker ticker;
    Ticker tickerTwo;

  @Before
  public void setUp() throws Exception {
    account = ...
        ticker = ...;
      tickerTwo = ...;
    ....
    }

  @Test
  public void testSave() {

    Watching watching = account.getWatching();
    watching.getTickers().add(ticker);
    watching.getTickers().add(tickerTwo);


    Watching saved = accountService.save(account).getWatching();


    Ticker one = saved.getTickers().get(0);
    int size = saved.getTickers().size();
    assertEquals(2, size);
    Assert.assertEquals(one, tickerTwo); <-- fails
  }

1 Ответ

0 голосов
/ 26 февраля 2019

Используйте вместо этого @OrderBy.@OrderColumn упорядочивает записи по невидимым столбцам, кроме ID.

Столбец заказа не отображается как часть состояния сущности или встраиваемого класса.

Аннотацию OrderBy следует использовать для упорядочивания, которое отображается как постоянное состояние и поддерживаетсязаявление.

https://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

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