2009-03-10 9 views
0

私はhibernate 3.0(posgre 8.3)、Java 1.6、Netbeans 6.5を使用しています。Hibernateはクエリの後にエンティティに対してパブリックメソッドを呼び出しています。なぜですか?

「sqlQuery.list()は、」期待通りエントラーダオブジェクトが返されると呼ばれる
String query = "SELECT DISTINCT ON (origem) * FROM entrada " + 
       "ORDER BY origem, horadata DESC"; 
     SQLQuery sqlQuery = this.getSession().createSQLQuery(query); 
     sqlQuery.addEntity(Entrada.class); 
     List entradas = sqlQuery.list(); 

:私はこのようなすべてのユニークな最新のエントリを返すために、1つのネイティブクエリを作成しました。しかし、オブジェクトEntrada内のすべてのパブリック非静的メソッドが呼び出されます。私はこの行動を望んでいない、誰かが私を助けることができますか? ありがとうございます。

+0

他のどのようにしてEntradaオブジェクトを生成すると思いますか? –

+0

設定方法を使用していますか? – Ricardo

答えて

2

"すべての"パブリックメソッドとは何ですか?

hibernateがエンティティを作成し、データベースのデータを埋め込むときにgetterとsetterが呼び出されます。エンティティクラスはJava Beanの仕様を満たす必要があるため、hashCode()、toString()以外のパブリックメソッドは存在しないはずです...

+0

そうです、getメソッドが呼び出されます。 私は、DAO上の他のメソッドを呼び出すためにエンティティにいくつかのメソッドを作成しました。私は、ハイバネートとjavaを使った経験はありません。 – Ricardo

+0

もう1つの質問! busssinessメソッドと別のプロパティはどこに置く必要がありますか? – Ricardo

+0

エンティティにはビジネスロジックを持たないでください。 JPA仕様の最初の100ページを読んでください!私の意見では、ビジネスロジックはパーシスタンスレイヤの一部です。このレイヤーはビジネスメソッドを提供し、hibernate/jpaを使用してORマッピングを行います。 – Timo

関連する問題