3

注釈付きのSpring + Hibernateを使用すると、次のエラーが発生しました:

org.hibernate.hql.ast.QuerySyntaxException: Produit is not mapped [from Produit]

この関数を呼び出すと追加されます:

public List<Produit> getListeProduit() {

    return sessionFactory.getCurrentSession().createQuery("from Produit").list();
}

これは私の hibernate.cfg.xml です

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
    <mapping class="port.domain.Produit" />
</session-factory>     
</hibernate-configuration>

Produit クラスには @Entity、@Id、@Column、@GeneratedValue を含む @Table ID で十分に注釈が付けられます。他の列は @Column を使用します。

XXX-servlet.xml の Bean SessionFactory は次のとおりです。

<bean id="sessionFactory"     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
        <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
</bean>

編集:エンティティコード

@Entity
@Table(name="produit")
public class Produit implements Serializable{

@Id
@Column(name="produit_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int produitId;

@Column(name="produit_nom")
private String produitNom;

public void setProduitId(int i) {
    produitId = i;
} 

public int getProduitId() {
    return produitId;
} 

public void setProduitNom(String s) {
    produitNom = s;
} 

public String getProduitNom() {
    return produitNom;
} 
}

この問題について多くのスレッドがあることは知っていますが、正しい問題は見つかりません。Hibernate がクラスをマップできないことは理解していますが、その理由はわかりません ...

問題はどこから来るのでしょうか?

どうもありがとう。

4

1 に答える 1

3

通常、問題は些細なことですjavax.persistence.Entity。Hibernate固有の代わりにを使用する必要がありますorg.hibernate.annotations.Entity。後者は、可能な場合はJPAアノテーションを優先して、Hibernateでは非推奨になりました。

それはまさにあなたが見せなかったものなので、それが幸運なショットであることを願っています:)

于 2012-12-07T08:22:47.537 に答える