Доброго времени. Сразу к делу, пожалуй, зачем тянуть. Прикрутил тест, запустил, жду зеленый статус, а нет его. Ниже детали.
@Entity
@Table(name = "sessions")
public class Session {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "id", unique = true)
private String id;
@Column(name = "movie")
private String movie;
@Column(name = "time")
private Date time;
@OneToMany(mappedBy = "session", fetch = FetchType.LAZY)
private List<Reservation> reservations;
...
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Session session = (Session) o;
if (id != null ? !id.equals(session.id) : session.id != null) return false;
if (movie != null ? !movie.equals(session.movie) : session.movie != null) return false;
if (time != null ? !time.equals(session.time) : session.time != null) return false;
return !(reservations != null ? !reservations.equals(session.reservations) : session.reservations != null);
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (movie != null ? movie.hashCode() : 0);
result = 31 * result + (time != null ? time.hashCode() : 0);
result = 31 * result + (reservations != null ? reservations.hashCode() : 0);
return result;
}
}
Где-то по соседству:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:ticket-app.xml")
@ActiveProfiles("test")
public class SessionTest {
private static List<Session> expectedSessions;
@BeforeClass
public void setUp() throws ParseException {
expectedSessions = Arrays.asList(
new Session("69c48d7f-77e4-46de-b72f-93310c2fdcca", "Movie #1", new Timestamp(new SimpleDateFormat("dd-MM-yyyy").parse("10-06-2015").getTime()))
);
}
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void thatTicketsSelectionWorks() {
List<Session> sessions = ticketService.listSessions(new Date());
assertTrue(CollectionUtils.containsAny(sessions, expectedSessions));
}
...
}
new Timestamp(new SimpleDateFormat(«dd-MM-yyyy»).parse(«10-06-2015»).getTime()), Карл! (т.к. хибернейт намекает на Timestamp, а ручками менять сгенерированные идеей equals - последнее дело). Потому что ручками, тащемта.
Суть проблемы: в containsAny коллекции пустые, хотя на строке, в которой я их получаю из h2m - коллекции наполнены, как и ожидается. Вопрос - кто здесь неправ?