/**
   * Tests that the document id must be unique
   *
   * @throws Exception in case the test fails.
   */
  @Test
  public void testDocumentIdMustBeUnique() throws Exception {
    Article hello = new Article();
    hello.setDocumentId(1);
    hello.setText("Hello World");

    Article goodbye = new Article();
    goodbye.setDocumentId(1);
    goodbye.setText("Goodbye World");

    Session s = openSession();
    Transaction tx = s.beginTransaction();
    s.save(hello);
    s.save(goodbye);
    tx.commit();
    s.clear();

    tx = s.beginTransaction();
    try {
      Search.getFullTextSession(s)
          .createFullTextQuery(new TermQuery(new Term("text", "world")))
          .list();
      fail("Test should fail, because document id is not unique.");
    } catch (SearchException e) {
      assertEquals(
          "Loading entity of type org.hibernate.search.test.id.Article using 'documentId' as document id and '1' as value was not unique",
          e.getMessage());
    }
    tx.commit();
    s.close();
  }
  /**
   * Tests that @DocumentId can be specified on a field other than the @Id annotated one. See
   * HSEARCH-574.
   *
   * @throws Exception in case the test fails.
   */
  @Test
  public void testExplicitDocumentIdMultipleResults() throws Exception {
    Article hello = new Article();
    hello.setDocumentId(1);
    hello.setText("Hello World");

    Article goodbye = new Article();
    goodbye.setDocumentId(2);
    goodbye.setText("Goodbye World");

    Session s = openSession();
    Transaction tx = s.beginTransaction();
    s.save(hello);
    s.save(goodbye);
    tx.commit();
    s.clear();

    tx = s.beginTransaction();
    List results =
        Search.getFullTextSession(s)
            .createFullTextQuery(new TermQuery(new Term("text", "world")))
            .list();
    assertEquals(2, results.size());
    tx.commit();
    s.close();
  }