I have a @ManyToMany relationship table between User and Diet classes. The table (UserIsOnADiet) has 2 additional columns: fromDate (starting the diet) and toDate (ending). When a user enrolls on a diet, I want to set a value on the fromDate attribute, since it has a not-null constraint. How can I do that? Here is my code:
Class User
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer username_id;
private String username;
@ManyToMany
@JoinTable(
name = "is_on",
joinColumns = @JoinColumn(name = "username_id"),
inverseJoinColumns = @JoinColumn(name = "diet_id"))
private Set<Diet> userIsOnADiet;
Class Diet
@Entity
public class Diet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer diet_id;
private String diet_name;
@ManyToMany(mappedBy = "userIsOnADiet")
public List<User> users;
UserService:
@Override
public User updateDiets(Integer id, Diet d) {
User u = this.findById(id);
Set<Diet> userDiets = u.getUserIsOnADiet();
userDiets.add(d);
// LocalDate fromDate = LocalDate.now();
// UserIsOnADiet userIsOnADiet = new UserIsOnADiet();
// userIsOnADiet.setFromDate(fromDate);
// I want to do something like this, but I cannot save User with null value on fromDate,
//and cannot set fromDate before creating a tuple in the database.
return this.userRepository.save(u);
}