A więc tak, encja Group
//imports ...
@Entity
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date lolA
@Column(columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date lolB
private int lolC
@ManyToMany(mappedBy = "group_list")
private Set<User> userList = new HashSet<>();
//geters and setters ...
}
encja User
//imports
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birth_date;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(
name = "group_user",
joinColumns = { @JoinColumn(name = "user_id") },
inverseJoinColumns = { @JoinColumn(name = "group_id") }
)
private Set<Group> groupList = new HashSet<>();
//geters and setters
}
userReporitory i groupRepository
public interface UserRepository extends CrudRepository<User, Long> {
}
...
public interface GroupRepository extends CrudRepository<Group, Long> {
}
UserService
public interface UserService {
Set<User> getAll();
User findById(Long id);
void deleteById(Long id);
void update(User t);
void deleteGroupById(User user, Group group);
}
UserServiceImplementation
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository userRepository){
this.userRepository = userRepository;
}
@Override
public Set<User> getAll() {
Set<User> userSet = new HashSet<>();
userRepository.findAll().iterator().forEachRemaining(userSet::add);
return userSet;
}
//findById wyciąłem tą metodę bo działa dobrze
@Override
public void deleteById(Long id) {
userRepository.deleteById(id);
}
@Override
public void update(User t) {
userRepository.save(t);
}
@Override
public void deleteGroupById(User user, Group group) {
user.getGroupList().remove(group);
group.getUserList().remove(user);
}
}