0

MySQLでテーブルを作成しました。

'object_label'と列'id'および'name'。このテーブルに値を挿入しました。

Javaで、新しいクラス'ObjectLabel'を作成しました。

import javax.persistence.*;

 @Entity
    @Table(name = "object_label")
    public class ObjectLabel  implements Serializable {

        private static final long serialVersionUID = 3475812350796110403L;
        private String name;

        public Long getId() { return id; }

        @Id 
        @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(precision = 10, unique = true, nullable = false, updatable = false)
    public Long getId() {
        return id;
    }

    public void setId( Long id ) {
        this.id = id;
    }

        /**
         * @return the name
         */
        public String getName() {
            return name;
        }
        /**
         * @param name the name to set
         */
        public void setName(String name) {
            this.name = name;
        }


    }

定義されたhibernate.cfg.xmlで:

<mapping class="com.myCompany.model.ObjectLabel" />

私はテーブルからvaluseを取得したいので、サービスを見つけました:

@SuppressWarnings( "unchecked" )
    @Transactional( readOnly = true, propagation = Propagation.SUPPORTS )
    public Collection<T> findAll() {
        Session session = getSessionFactory().getCurrentSession();

        return 
            session.createCriteria( persistentClass 
                    ).setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY
                            ).list();
    }

空のリストを取得します。

データベースで'select* from' object_label''は値を返します)

私のコードの何の問題ですか?

ありがとう!

4

2 に答える 2

1

コードの内容はわかりませんが、すべてのレコードのインスタンスpersistentClassを取得する基準クエリ は次のようになります。ObjectLabel

List results = session.createCriteria(ObjectLabel.class).list();

Criteria.DISTINCT_ROOT_ENTITY投影を行っていないため、なぜ使用しているのかわかりません。

正確に何が起こっているかを確認するには、SQL ステートメントのログを有効にすることをお勧めします ( hibernate.show_sqlnkr1pt によって提案されたプロパティを使用するか、org.hibernate.SQLログ カテゴリを介して)。Hibernate のドキュメントから:

3.5 ロギング

...

Hibernate を使用してアプリケーションを開発する場合、ほとんどの場合debug、カテゴリを有効にするorg.hibernate.SQLか、代わりにプロパティ をhibernate.show_sql有効にして作業する必要があります。

于 2010-09-02T14:11:01.097 に答える
0

hibernate が生成する sql は何ですか。config の show_sql が true に設定されている場合、コンソール/ログで確認できます。

また、@Entity @Table(name="....") の代わりに @Entity(name="...") を使用すると、JPA アノテーションと Hibernate アノテーションが混在しています。

于 2010-09-02T12:02:22.293 に答える