UserGroupAsso.java

package ntnu.idatt2016.v233.SmartMat.entity.group;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import lombok.*;
import ntnu.idatt2016.v233.SmartMat.entity.user.User;

/**
 * UserGroupTable is a class representing the user_group table in the database.
 * It is used to represent the many-to-many relationship between users and groups.
 * @Author Birk, Pedro
 * @Version 1.2
 */
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter @Setter
@Builder
@Table(name = "user_group")
public class UserGroupAsso {

    @EmbeddedId
    private UserGroupId id;

    @ManyToOne
    @MapsId("username")
    @JoinColumn(name = "username")
    @JsonIgnore
    private User user;

    @ManyToOne
    @MapsId("group_id")
    @JoinColumn(name = "group_id")
    @JsonIgnoreProperties({"user", "fridge", "shoppingList"})
    private Group group;

    @Column(name = "primary_group")
    private Boolean primaryGroup;

    @Column(name ="group_authority")
    private String groupAuthority;
}