Я запускаю тесты JUnit, используя в памяти HSQLDB. Предположим, у меня есть метод, который вставляет некоторые значения в БД, и я проверяю, правильно ли вставил эти значения. Обратите внимание, что порядок вставки не важен.Сравнение объектов при модульном тестировании с Hibernate
@Test
public void should_insert_correctly() {
MyEntity[] expectedEntities = new MyEntity[2];
// init expected entities
Inserter out = new Inserter(session); // out: object under test
out.insert();
List list = session.createCriteria(MyEntity.class).list();
assertTrue(list.contains(expectedEntities[0]));
assertTrue(list.contains(expectedEntities[1]));
}
Проблема в том, что я не могу сравнивать ожидаемые объекты с фактическими, так как ожидается, идентификационная и идентификатор фактического различны. Поскольку setId() из MyEntity является закрытым (чтобы явно не указывать идентификатор параметра), я не могу установить все идентификаторы сущностей в 0 и сравнить их.
Как сравнить два набора результатов независимо от их идентификаторов?
Не могли бы вы предоставить дополнительную информацию о значениях, в которых содержится ваш класс MyEntity? Есть ли какой-либо член, который может дать вам первичный ключ? – guerda