Vlad Danila:
Eu tenho um repositório
public interface GroupRepository extends JpaRepository<Group, Integer> {
}
O Grupo tem uma lista de itens
private List<Item> items;
Cada item tem uma posição de propriedade
private int position;
Como posso recuperar um grupo por saber a posição de um item presente em uma das listas ?
Item.java
public class Item extends PersistedBean{
private int position;
private Group group;
@Column(name = "Position")
public int getPosition() {
return position;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "GroupId", referencedColumnName = "Id")
public Group getGroup() {
return group;
}
}
Group.java
public class Group extends PersistedBean {
private int position;
private List<Item> items;
@Column(name = "Position")
public int getPosition() {
return position;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "group", orphanRemoval = false)
public List<Item> getItems() {
return items;
}
}
Bartek:
Você pode adicionar consulta para seu JpaRepository<Group, Integer>
repositório, algo como deve funcionar:
@Query("SELECT g FROM Group g " +
"JOIN g.items i ON i.position IN :p")
List<Group> getGroupsWhenPositionMatchAnyRelatedItem(@Param("p") Integer p);