Witam
Robię "prosty" projekt strony www z przepisami kulinarnymi. Mam 3 klasy (jak na razie) Category, Receipt, User. Chcę aby klasa Category tylko przechowywała poszczególne kategorie i była niedostępna dla Usera. Dostęp do kategorii miałby jedynie Admin (dodawanie, modyfikacja itp.). Przy tworzeniu przepisu USER ma możliwość wybrania co najmniej jednej kategorii.
Jak zrobić, aby do dane posiłku dodać parę kategorii?
Próbowałem zrobić to poprze @OneToMany, ale tworzy mi jedynie tabele pomocnicza "receipt_categories" a w tabeli RECEIPT nie ma zadnego odwołania do tej tabeli...
package com.example.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
@Pattern(regexp = "([a-z]+ ?)+", message = "Tylko litery! (dozwolona jedna spacja miedzy wyrazami)")
@Size(min = 4, max = 15, message = "Nazwa musi miescic sie od 4 do 15 znakow")
private String categoryName;
@Lob
private byte[] categoryImage;
public Category() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
categoryName = categoryName.trim();
this.categoryName = categoryName;
}
public byte[] getCategoryImage() {
return categoryImage;
}
public void setCategoryImage(byte[] categoryImage) {
this.categoryImage = categoryImage;
}
@Override
public String toString() {
return categoryName;
}
}
package com.example.model;
import java.util.Date;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
@Entity
public class Receipt {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Pattern(regexp = "([a-zA-z]+ ?)+$", message = "Tylko litery! (dozwolona jedna spacja miedzy wyrazami)")
@Size(min = 4, max = 25, message = "Minumum 4 znaki max 25")
private String name;
@Size(min = 10, max = 250, message = "Minumum 10 znaki max 250")
private String ingridients;
@Size(min = 10, max = 250, message = "Minumum 10 znakow max 250")
private String description;
@Lob
private byte[] image;
private int qtyPpl;
private Date sumbitDate;
@OneToOne
private User user;
@OneToMany(cascade = CascadeType.ALL)
private Set<Category> categories;
public Receipt() {
this.sumbitDate = new Date();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
name = name.trim();
this.name = name;
}
public String getIngridients() {
return ingridients;
}
public void setIngridients(String ingridients) {
this.ingridients = ingridients;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
}
public int getQtyPpl() {
return qtyPpl;
}
public void setQtyPpl(int qtyPpl) {
this.qtyPpl = qtyPpl;
}
public Date getSumbitDate() {
return sumbitDate;
}
public void setSumbitDate(Date sumbitDate) {
this.sumbitDate = sumbitDate;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Receipt [id=" + id + ", name=" + name + ", ingridients=" + ingridients + ", description=" + description
+ ", qtyPpl=" + qtyPpl + ", sumbitDate=" + sumbitDate + ", user=" + user + "]";
}
}
Z góry dzieki