0

たとえば、私は持っています:

  @Column(name = "username")
  private String m_username;

@Column アノテーションは、データベースの列名にのみ影響することに注意してください。

Hibernate はまだプロパティの名前が「m_username」であると認識しています。

プロパティ名が単なる「ユーザー名」であることをHibernateに伝えるにはどうすればよいですか?

何かいい方法があれば教えてください...

編集:この質問には関係ないため、コード例で @AccessType 注釈を削除しました。

更新: すべてをフィールド アクセスに切り替えた後、次の例外が発生します。

org.hibernate.QueryException: could not resolve property: username of: mypackage.model.User

ここで起こります:

Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("username", username));
User result = (User) criteria.uniqueResult();

その理由は、休止状態が「m_username」という名前のプロパティを「知っている」だけである可能性が最も高いですが、私はそれを考えて「username」という名前のプロパティに対してプログラムします。また、私のゲッター/セッターが呼び出されていることに注意してください: "getUsername()" および "setUsername(String value)" (自動生成)。

4

3 に答える 3

0

ここで1つのリードを見つけました:https ://forum.hibernate.org/viewtopic.php?f = 1&t = 943110

しかし、スレッドは7年前のものであり、これをアノテーションベースの構成に適用する方法がわかりません(xml構成ファイルがありません)。

于 2013-02-18T10:24:49.107 に答える
0

なぜ使うのAccessType.PROPERTYですか?

それを削除すると、「フィールド」によってアクセスされます。

フィールド アノテーションとプロパティ アノテーションを混在させないでください。どちらかに固執します。

于 2013-02-16T22:54:24.623 に答える
0

私の知る限り、できません*。

hibernateのメソッドを検索する方法には、まだ 1 つの問題がありgiven property nameます。

「mProperty」のような名前の があるとしますproperty(最初の小文字、2 番目の大文字、残りは関係ありません)。accessor ソース コードのメソッドは と ではgetMPropertyありませんsetMProperty

方法BasicPropertyAccessor.getterMethodはそのように実装されています。

于 2013-02-16T23:00:31.187 に答える