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

Merge branch 'bugfix/240-fix-json-ignore-in-none-owner-entites' into 'main'

Resolve "fix json ignore in none owner entites"

Closes #240

See merge request idatt2106-v23-03/backend!179
parents 976289a0 24513e8b
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