UserCommons.java

package edu.ucsb.cs156.happiercows.entities;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.*;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;

@Data
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Builder
@Entity(name = "user_commons")
public class UserCommons {
    @EmbeddedId
    @JsonIgnore
    @Builder.Default
    private UserCommonsKey id = new UserCommonsKey();

    @MapsId("userId")
    @ManyToOne
    @JsonIgnore
    private User user;

    @MapsId("commonsId")
    @ManyToOne
    @JsonIgnore
    private Commons commons;

    private String username;

    private double totalWealth;

    private int numOfCows;

    private double cowHealth;

    private int cowsBought;

    private int cowsSold;

    private int cowDeaths;

    // userID and commonsId are used by the frontend
    @JsonInclude
    public long getUserId() {
      return user.getId();
    }

    @JsonInclude
    public long getCommonsId() {
        return commons.getId();
    }

    public void setId(UserCommonsKey id) {
        this.id = id;
    }
    
    public UserCommonsKey getId() {
        return this.id;
    }
}