Skip to content
Snippets Groups Projects
Commit 24513e8b authored by Birk Øvstetun Narvhus's avatar Birk Øvstetun Narvhus
Browse files

fixed relations and json ignores of entites

parent 5225421b
No related branches found
No related tags found
No related merge requests found
Showing
with 80 additions and 94 deletions
......@@ -3,6 +3,7 @@ package ntnu.idatt2016.v233.SmartMat.entity;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
......@@ -39,15 +40,21 @@ public class Recipe {
@Column(name = "recipe_description")
String description;
@ManyToMany
@JoinTable(name = "recipe_product",
joinColumns = @JoinColumn(name = "recipe_id"),
inverseJoinColumns = @JoinColumn(name = "ean"))
@ManyToMany(fetch = FetchType.LAZY,
cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}
,mappedBy = "recipes"
)
@JsonIgnoreProperties({"recipes"})
List<Product> products;
@ManyToMany(mappedBy = "recipes")
@JsonIgnoreProperties({"recipes"})
@ManyToMany(fetch = FetchType.LAZY,
cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}
)
@JoinTable(
name = "favorite_recipes",
joinColumns = @JoinColumn(name = "recipe_id"),
inverseJoinColumns = @JoinColumn(name = "username"))
@JsonIgnore
List<User> users;
......
package ntnu.idatt2016.v233.SmartMat.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import lombok.*;
......@@ -33,14 +34,11 @@ public class ShoppingList {
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "group_id")
@JsonIgnoreProperties({"shoppingList", "hibernateLazyInitializer", "handler"})
@JsonIgnore
private Group group;
@ManyToMany
@JoinTable(
name = "shopping_list_product",
joinColumns = @JoinColumn(name = "shopping_list_id"),
inverseJoinColumns = @JoinColumn(name = "ean"))
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY, mappedBy = "shoppingLists")
@JsonIgnoreProperties("shoppingLists")
private List<Product> products;
......
package ntnu.idatt2016.v233.SmartMat.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
......@@ -31,13 +32,16 @@ public class Waste {
@Column(name = "waste_id")
long wasteId;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY,
cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "group_id")
@JsonIgnoreProperties("group")
@JsonIgnore
Group groupId;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY,
cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn (name= "ean")
@JsonIgnore
Product ean;
@Column(name = "timestamp")
......
......@@ -21,16 +21,14 @@ public class FridgeProductAsso {
@Column(name = "fridge_product_id")
private long id;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "fridge_id")
@JsonIgnoreProperties({"products"})
@JsonIgnore
private Fridge fridgeId;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "ean")
@JsonIgnoreProperties({"fridges"})
//@JsonIgnore // Til Birk: måtte fjerne denne for å få nødvendig info i fridge. Er det dumt?
private Product ean;
@Column(name = "purchase_date")
......
package ntnu.idatt2016.v233.SmartMat.entity.group;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -36,7 +34,11 @@ public class Achievement {
@Column(name = "achievement_description")
private String achievementDescription;
@ManyToMany(mappedBy = "achievements")
@JsonIgnoreProperties({"achievements"})
@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;
}
......@@ -3,6 +3,7 @@ package ntnu.idatt2016.v233.SmartMat.entity.group;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
......@@ -33,14 +34,14 @@ public class Fridge{
@Column(name = "fridge_id")
long fridgeId;
@OneToOne
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "group_id")
@JsonIgnoreProperties("fridge")
@JsonIgnore
Group group;
@OneToMany(cascade = CascadeType.ALL)
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY, mappedBy = "fridgeId")
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "fridge_id")
@JsonIgnoreProperties("fridge")
List<FridgeProductAsso> products;
......
......@@ -56,10 +56,9 @@ public class Group {
private ShoppingList shoppingList;
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.LAZY)
@JoinColumn(name = "group_id")
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY, mappedBy = "group")
@JsonIgnoreProperties("group")
@OnDelete(action = OnDeleteAction.CASCADE)
private List<UserGroupAsso> user = new ArrayList<>();
......@@ -76,10 +75,8 @@ public class Group {
@OnDelete(action = OnDeleteAction.CASCADE)
private Fridge fridge;
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.LAZY)
@JoinTable(name = "group_achievement",
joinColumns = @JoinColumn(name = "group_id"),
inverseJoinColumns = @JoinColumn(name = "achievement_name"))
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.LAZY,
mappedBy = "groups")
@JsonIgnoreProperties({"groups"})
private List<Achievement> achievements;
......
package ntnu.idatt2016.v233.SmartMat.entity.product;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -35,12 +33,20 @@ public class Allergy{
@Column(name = "allergy_description")
String description;
@ManyToMany(mappedBy = "allergies")
@JsonIgnoreProperties({"allergies"})
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(
name = "product_allergy",
joinColumns = @JoinColumn(name = "allergy_name"),
inverseJoinColumns = @JoinColumn(name = "ean") )
@JsonIgnore
private List<Product> products;
@ManyToMany(mappedBy = "allergies")
@JsonIgnoreProperties({"allergies"})
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(
name = "user_allergy",
joinColumns = @JoinColumn(name = "allergy_name"),
inverseJoinColumns = @JoinColumn(name = "username") )
@JsonIgnore
private List<User> users;
}
\ No newline at end of file
package ntnu.idatt2016.v233.SmartMat.entity.product;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
......@@ -22,6 +23,6 @@ public class Category {
String description;
@OneToMany(mappedBy = "category")
@JsonIgnoreProperties({"category"})
@JsonIgnore
private List<Product> products;
}
\ No newline at end of file
......@@ -39,15 +39,19 @@ public class Product{
@Column(name = "description")
String description;
@ManyToMany(mappedBy = "products")
@JsonIgnoreProperties({"products"})
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY)
@JoinTable(
name = "shopping_list_product",
joinColumns = @JoinColumn(name = "ean"),
inverseJoinColumns = @JoinColumn(name = "shopping_list_id") )
@JsonIgnore
List<ShoppingList> shoppingLists;
@ManyToOne
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY)
@JoinColumn(name = "category_name")
@JsonIgnoreProperties({"products"})
@JsonIgnore
Category category;
......@@ -66,24 +70,22 @@ public class Product{
@Column(name = "amount")
Double amount;
@ManyToMany
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY, mappedBy = "products")
@JsonIgnoreProperties({"products", "users"})
@JoinTable(
name = "product_allergy",
joinColumns = @JoinColumn(name = "ean"),
inverseJoinColumns = @JoinColumn(name = "allergy_name"))
@JsonIgnore
List<Allergy> allergies;
@OneToMany(cascade = CascadeType.ALL)
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
fetch = FetchType.LAZY, mappedBy = "ean")
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "ean")
@JsonIgnoreProperties({"products"})
@JsonIgnore
List<FridgeProductAsso> fridges;
@ManyToMany(mappedBy = "products")
@JsonIgnoreProperties({"products"})
@ManyToMany
@JoinTable(name = "recipe_product",
joinColumns = @JoinColumn(name = "ean"),
inverseJoinColumns = @JoinColumn(name = "recipe_id"))
@JsonIgnore
List<Recipe> recipes;
......
......@@ -57,24 +57,18 @@ public class User implements UserDetails {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "username")
@JsonIgnoreProperties("user")
@JsonIgnore
private List<UserGroupAsso> group;
@ManyToMany
@JoinTable(
name = "user_allergy",
joinColumns = @JoinColumn(name = "username"),
inverseJoinColumns = @JoinColumn(name = "allergy_name"))
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
mappedBy = "users")
@JsonIgnoreProperties({"users", "products"})
private List<Allergy> allergies;
@ManyToMany
@JoinTable(
name = "favorite_recipes",
joinColumns = @JoinColumn(name = "username"),
inverseJoinColumns = @JoinColumn(name = "recipe_id"))
@ManyToMany(mappedBy = "users",
fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JsonIgnoreProperties({"users"})
private List<Recipe> recipes;
......
......@@ -26,12 +26,6 @@ public interface GroupRepository extends JpaRepository<Group, Long> {
*/
Optional<Group> findByGroupName(String name);
/**
* Finds all groups by achievement name
* @param achievementName the name of the achievement
* @return list of groups with the given achievement
*/
List<Group> findAllByAchievementsAchievementName(String achievementName);
/**
* Gets group level by group id
......
......@@ -52,24 +52,6 @@ public class GroupRepositoryTest {
assertThat(result.get()).isEqualTo(group);
}
@Test
void shouldFindAllByAchievementsAchievementName() {
// given
Achievement achievement = Achievement.builder().achievementName("test achievement").build();
Group group1 = Group.builder().groupName("group 1").achievements(List.of(achievement)).build();
Group group2 = Group.builder().groupName("group 2").achievements(List.of(achievement)).build();
Group group3 = Group.builder().groupName("group 3").build();
groupRepository.saveAll(List.of(group1, group2, group3));
// when
List<Group> result = groupRepository.findAllByAchievementsAchievementName("test achievement");
// then
assertThat(result).containsExactlyInAnyOrder(group1, group2);
}
@Test
void shouldFindById() {
// given
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment