Я пришел к выводу, что это либо невозможно с аннотациями Hibernate, либо, возможно, просто не очень очевидно.
Мое решение было довольно хакерским: для Персона у меня есть метод с комментариями Transient, который фильтрует краски программным способом. Не идеально, потому что это может заставить дополнительный запрос получить объект Swatch.
Я не буду отмечать это как правильный, поскольку я думаю, что ответ Винет Рейнольдс на создание запроса, вероятно, является наиболее разумным в представленном мной случае. Тем не менее, запрос сложнее реализовать в моем реальном сценарии из-за неназванных факторов, которые, по моему мнению, не имеют отношения к моему примеру, и упоминание их добавило бы значительную сложность.