ホームページ  >  記事  >  Java  >  Hibernate が 1 対多の関係で「java.util.List のタイプを決定できませんでした」エラーをスローするのはなぜですか?

Hibernate が 1 対多の関係で「java.util.List のタイプを決定できませんでした」エラーをスローするのはなぜですか?

DDD
DDDオリジナル
2024-10-25 15:02:02460ブラウズ

Why Does Hibernate Throw a

休止状態エラー: java.util.List のタイプを決定できませんでした

問題:

一対多および多対一関係を含む CRUD 操作に Hibernate を使用しようとすると、次のエラーが発生します:

org.hibernate.MappingException: Could not determine type for: java.util.List, at table: College, for columns: [org.hibernate.mapping.Column(students)]

エンティティ クラス:

<code class="java">@Entity
public class College {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int collegeId;
    private String collegeName;

    @OneToMany(targetEntity = Student.class, mappedBy = "college", fetch = FetchType.EAGER)
    private List<Student> students;
}

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int studentId;
    private String studentName;

    @ManyToOne
    @JoinColumn(name = "collegeId")
    private College college;
}</code>

追加の詳細:

  • このエラーは、Hibernate が College クラスの Students フィールドのタイプを判断できないことを示しています。
  • フィールド アクセス戦略の詳細は、フィールドに直接配置された注釈によって示されます。
  • @OneToMany 注釈は、mappedBy 属性を使用します。これは、関係が Student クラスの大学フィールドによって管理されていることを意味します。
  • 提供された XML 設定ファイルは、Hibernate セッション ファクトリをセットアップし、関連するプロパティを指定します。

解決策:

この問題は、Hibernate がフィールドアクセス戦略の使用による学生フィールドのタイプ。これを解決するには、ゲッター プロパティではなく、JPA アノテーションを各フィールドのすぐ上に配置する必要があります。

<code class="java">@Entity
public class College {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int collegeId;
    private String collegeName;

    @OneToMany(targetEntity = Student.class, mappedBy = "college", fetch = FetchType.EAGER)
    public List<Student> students;
}</code>

以上がHibernate が 1 対多の関係で「java.util.List のタイプを決定できませんでした」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。