Achievement.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.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import ntnu.idatt2016.v233.SmartMat.entity.group.Group;

import java.util.List;

/**
 * Achievement is an entity class representing an achievement in the system.
 *
 * @author Anders, Birk
 * @version 1.1
 *
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity(name = "achievement")
public class Achievement {

    @Id
    @Column(name = "achievement_name")
    private String achievementName;

    @Column(name = "achievement_description")
    private String achievementDescription;

    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},
            fetch = FetchType.LAZY)
    @JoinTable(name = "group_achievement",
            joinColumns = @JoinColumn(name = "achievement_name"),
            inverseJoinColumns =  @JoinColumn(name = "group_id"))
    @JsonIgnore
    private List<Group> groups;
}