私はあなたの助けを必要とする問題に取り組んできました。
@コントローラ パブリッククラスJokeController {
@Autowired
JokeRepository jokeRepository;
CategoryRepository categoryRepository;
public Category dark_humor = new Category("Dark Humor");
public Category sports_and_athletes = new Category("Sports And Athletes");
@GetMapping("/new")
public String jokeForm(Model model) {
model.addAttribute("joke", new Joke());
return "jokeForm"; // jokeForm.html
}
@PostMapping("/new")
public String jokeSubmit(@ModelAttribute Joke joke) {
//joke.setCategory(dark_humor);
jokeRepository.save(joke);
return "redirect:/new";
//return "resultJoke"; // resultCategory.html
}
}
私のエンティティ:
関係では、カテゴリには多くのジョークを含めることができますが、ジョークは1つのカテゴリにのみ属することができます。
カテゴリー @エンティティ パブリッククラスカテゴリ{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
public Category() {
}
public Category(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Category{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
冗談で
@エンティティ パブリッククラスのジョーク{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int joke_id;
@Column(name = "likes")
@Value("${some.key:0}")
private int likes;
@Column(name = "dislikes")
@Value("${some.key:0}")
private int dislikes;
@Column(name = "content")
@NotNull
private String content;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@NotNull
@JoinColumn(name = "category_id")
private Category category;
public Joke() {
}
public Joke(@NotNull String content, @NotNull Category category) {
this.content = content;
this.category = category;
}
public int getJoke_id() {
return joke_id;
}
public void setJoke_id(int joke_id) {
this.joke_id = joke_id;
}
public int getLikes() {
return likes;
}
public void setLikes(int likes) {
this.likes = likes;
}
public int getDislikes() {
return dislikes;
}
public void setDislikes(int dislikes) {
this.dislikes = dislikes;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
@Override
public String toString() {
return "Joke{" +
"joke_id=" + joke_id +
", likes=" + likes +
", dislikes=" + dislikes +
", content='" + content + '\'' +
", category=" + category +
'}';
}
}
私のタイムリーフ:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Form</h1>
<form action="#" th:action="@{/new}" th:object="${joke}" method="post">
<p>Content: <input type="text" th:field="*{content}" /></p>
<p>Category: <input type="text" th:field="*{category}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>
*Specifically in this section:*
@PostMapping("/new")
public String jokeSubmit(@ModelAttribute Joke joke) {
//joke.setCategory(dark_humor);
jokeRepository.save(joke);
return "redirect:/new";
//return "resultJoke"; // resultCategory.html
}
Hibernateで新しいジョークを保存したい既存の カテゴリー。しかし、私は私のフォームですべてをロードする方法がわかりません既存の カテゴリとPostメソッドでそれを使用して、フォームで明示的に選択したカテゴリのジョークを送信する方法。私はまだ取り上げていない重要な側面を見逃していると思います。
回答 1 件
関連記事
- SpringbootHibernateはSQLServerの既存のテーブルからデータを読み取ります
- Java Spring Hibernate:多対1の関係を実装しようとするとエラーが発生する
- Spring MVCのMultipartFileをSMBネットワークドライブに保存するのに助けが必要です
- Hibernate Springアノテーションの混乱
- Hibernate ValidatorアノテーションがSpring MVCで機能しない
- ネイティブHibernate例外をSpring DataAccessExceptioに変換する必要がある理由
- 春のブートで休止状態の列数を変更する
- スプリングブートJPAとHibernateの違いは何ですか
- 既存のキャッシュをSpring @Cacheableへのマップとして変換する
関連した質問
- Camundaアプリケーションのアプリケーションヘルスチェックと診断を公開するためのSpringBootアクチュエータを作成/カスタマイズするにはどうすればよいですか?
- Mavenマルチモジュール依存関係コンパイルの問題
- 検証アノテーションを持つBeanプロパティのテストケースでConstraintValidationExceptionを発生させる方法は?
- bootstrapyml構成はSpringCloud20200では処理されなくなりました
- 現在のリクエストからFeignインターセプターを介して動的ヘッダー値をfeign-clientに追加するにはどうすればよいですか?
- JPAリポジトリFindbyidが繰り返しリストを返す
- パスワードの検証と確認済みのパスワードSpringBoot
- EnvironmentPostProcessorの実装で@ConstructorBindingバインドされた不変の@ConfigurationPropertiesBeanを使用することは可能ですか?
- コンストラクターで通常のプロパティと混合されたSpringinjectリポジトリ
- SpringBootのjavaxvalidationconstraintsEmail
最初のステップは、コントローラーでカテゴリーをハードコード設定して、正しく保存されるようにすることです。また、ジョークを保存することでカテゴリのプロパティを変更できるとは思わなかったので、ジョーククラスでカスケードを削減します。
ハードコードされたカテゴリでジョークを保存できることを確信したら、UIでカテゴリを選択します。これで、簡単にカテゴリをジョークオブジェクトに直接設定できなくなります。値をコントローラに渡し、それを使用してバックエンドでカテゴリを選択する方がはるかに簡単です。 あなたがの線に沿って何かをしようとした場合
そして
今、これは動作するはずですが、きれいになりますが、あなたは私の小さな欲求不満の1つを実装しています:理想的にはORMオブジェクトはフォームオブジェクトとして使用すべきではありませんが、それは質問の範囲です私はあなたとコードの概念の分離について喜んで議論します。