私たちの製品では、自動生成された休止状態エンティティを使用して、カスタマイズ可能なデータベーススキームを当社のサーバーソフトウェアにリンクすることができます。エンティティ名とプロパティ名は、データベースから取得されます。特に、プロパティ名は、ハイバーネーションデータレイヤーとは無関係のユーザーコード(例えば、Pythonスクリプト)で使用されるため、通常は変更できません。hibernateエンティティで大文字のプロパティを使用するには
これらのプロパティ名の一部は大文字になります。
org.hibernate.QueryException: could not resolve property List_id
at org.hibernate.QueryException.generateQueryException(QueryException.java:137)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
例えば、例外のためのいくつかのコードスニペット:
@Entity(name = "ListItem")
@Table(name = "LIST_ITEM")
public class ListItem
extends HibernatePojoClass
{
private String List_id = "";
@Column(name = "`LIST_ID`", length = 8)
public String getList_id() {
return List_id;
}
public void setList_id(String List_id) {
this.List_id = List_id;
}
...
とHQLの声明: select li.id, li.List_id from ListItem li
の例外がときに発生するなど、これらのプロパティ名は例外で失敗使っHQL文hibernateは、hql文をSQL文に変換しようとします。
どうしてですか?
hqlステートメントでli.list_id
を使用すると、プロパティが解決されたようですが(これは別のエラーにつながります)。この暗黙の「資本化の変化」をどうにかして防ぐことができますか?
使用 '名=「LIST_IDを」'強調し、コードカラーリングのようなIDEの機能にあまり依存になるでしょう。 – Thomas
これは見つからないプロパティ名( "List_id")であるため、これは何も変わらないとは思っていません... –
Hibernateはおそらく '@Column'アノテーションで提供されている名前では問題を抱えているので、メタモデルを作成する。ちょうどそれを修正しようとすると安全です。それ以外にgetterを使ってプロパティを定義するときHibernateはgetterから 'get'を取り除き、最初の文字を小文字にします。したがって' getList_id'はプロパティが 'list_id'という名前になります(Btw、Javaコード問題ではない慣習)。 – Thomas