春と休止状態の関係に関する多くのチュートリアルを読みましたが、私の場合にそれらを使用する方法について少し混乱しています...次のように定義された製品/カテゴリエンティティがあります:
製品
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private int id;
@Column
private int category;
.
.
.
カテゴリー
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private int id;
@NotEmpty
@Column
@Size (max = 25)
private String name;
.
.
.
だから、私は製品リストページで、「カテゴリ」という声の下にカテゴリ名が表示され、製品フォームにカテゴリリストが表示されます...私の場合、製品は1つのカテゴリにしか適合しないので、私が正しい場合@ManyToOne である必要がありますが、これを実装する方法がわかりません... 製品データベースに categoryId フィールドがありますが、カテゴリ エンティティ フィールドを @OneToMany としてマークすると、db に保存されません。 ..
編集 私はこのように変更しました(提案されているように): Product.class
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private int id;
@NotEmpty
@Column
@Size (max = 25)
private String name;
@Column
@Size (max = 255)
private String description;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "category_id", nullable = false)
private Category category;
カテゴリ.クラス
@Entity
@Table(name = "categories")
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private int id;
@NotEmpty
@Column
@Size (max = 25)
private String name;
@Column
@Size (max = 255)
private String description;
//Here mappedBy indicates that the owner is in the other side
@OneToMany(fetch = FetchType.EAGER, mappedBy = "category", cascade = CascadeType.ALL)
private Set<Product> products = new HashSet<Product>();
コントローラ
@RequestMapping(value = "/add/", method = RequestMethod.POST)
public String addProduct(
@ModelAttribute(value = "product") @Valid Product product,
BindingResult result, ModelMap model, Category category) {
if (result.hasErrors()) {
return "forms/productForm";
}
try {
category.addProduct(product);
product.setCategory(category);
// Add product to db
productService.addProduct(product);
} catch (Exception e) {
log.error("/add/---" + e);
return "redirect:/product/deniedAction/?code=0";
}
return "redirect:/admin/product/";
}
製品フォーム文字列からカテゴリにデータを変換するために、製品コントローラに @initbinder も追加しました...しかし、製品を保存すると、既存の選択されたカテゴリを添付する代わりに、カテゴリが自動的に保存されます...