Здравствуйте, возник вопрос по поводу использования Spring Data(Hibrante) в Java. вопрос заключается в следующем: можно ли при мэппинге какого, либо объекта добавить дополнительную информация из БД в поле этого объекта, к примеру:
@Entity
@Table(name = "groups")
public class Group {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name= "increment", strategy= "increment")
@Column(name = "id", unique = true, nullable = false)
private long id;
@Column(name = "name", length = 20, nullable = false)
private String name;
//Есть таблица Users в БД, и у них связь один ко многим. Хотелось
//бы при мэппинге этого объекта посчитать кол-во пользователей в этой группе
private int countUsers;
public Group(){
}
public Group(String name) {
this.name = name;
}
//Seters, getters, equals and hash code
}
public interface GroupRepository extends JpaRepository<Group, Long> {
@Transactional
void deleteByName(String name);
@Transactional
Group findByName(String name);
}
@Service
public class GroupsServiceImpl implements GroupsService {
@Autowired
private GroupRepository groupRepository;
public List<Group> getGroups() {
return groupRepository.findAll();
}
public boolean addGroup(String nameGroup) {
Group group = groupRepository.findByName(nameGroup);
if(group == null) {
groupRepository.saveAndFlush(new Group(nameGroup));
return true;
} else {
return false;
}
}
public boolean changeNameGroup(String oldName, String newName) {
Group oldGroup = groupRepository.findByName(oldName);
Group newGroup = groupRepository.findByName(newName);
if(oldGroup != null && newGroup == null){
oldGroup.setName(newName);
groupRepository.save(oldGroup);
return true;
} else {
return false;
}
}
public boolean removeGroup(String nameGroup) {
Group group = groupRepository.findByName(nameGroup);
if(group != null) {
groupRepository.deleteByName(nameGroup);
return true;
} else {
return false;
}
}
}
На подобии этого существуют такие же классы и для Users. Можеть кто-нибудь подскажет как это возможно осуществить...
Вижу 2 варианта:
В UserRepository определить метод:
@Query("SELECT COUNT(user) FROM Users user WHERE user.groupId=:groupId")
public int countUserInGroup(int groupId);
В классе Group описать это отношение и написать метод:
Set<User> users;
public int getCountUsers(){
return users.size();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Здравствуйте, возник проблемы с использованием АОП в JavaНикак не могу понять, почему не работает логгирование, уже все перепробовал
Написал код, который выполняет такие задания как: 1)Вывести последний символ числа(число должно состоять из трёх цифр)2)Вывести десяток из числа(число...
Пытаюсь создать элемент поверх всех активити, получаю ошибку