/** * 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(); }