1

Kundera を使用して「クラスのエンティティ メタデータが見つかりません」というエラーが表示されます。同様の質問がここに あり ます。 .

これは私が得るエラーです

3168 [main] WARN com.impetus.kundera.metadata.KunderaMetadataManager  - No Entity metadata found for the class class kundega.rules.Rule. Any CRUD operation on this entity will fail.If your entity is for RDBMS, make sure you put fully qualified entity class name under <class></class> tag in persistence.xml for RDBMS persistence unit. Returning null value.
Exception in thread "main" com.impetus.kundera.KunderaException: java.lang.IllegalArgumentException: Entity object is invalid, operation failed. Please check previous log message for details
    at com.impetus.kundera.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:174)
    at kundega.rules.AppMain.main(AppMain.java:27)
Caused by: java.lang.IllegalArgumentException: Entity object is invalid, operation failed. Please check previous log message for details
    at com.impetus.kundera.graph.ObjectGraphBuilder.getNode(ObjectGraphBuilder.java:101)
    at com.impetus.kundera.graph.ObjectGraphBuilder.getObjectGraph(ObjectGraphBuilder.java:75)
    at com.impetus.kundera.persistence.PersistenceDelegator.persist(PersistenceDelegator.java:135)
    at com.impetus.kundera.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:168)

これが私のファイルです。 Persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">  
    <persistence-unit name="UNIT">      
        <provider>com.impetus.kundera.KunderaPersistence</provider>
        <class>kundega.rules.Rule</class>
        <properties>
            <property name="kundera.client.lookup.class" value="com.impetus.client.rdbms.RDBMSClientFactory" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
            <property name="hibernate.connection.url" value="jdbc:mysql://130.230.141.228:3306/fastory" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="mysql" />
        </properties>
    </persistence-unit>    
</persistence>

Entity クラスの開始

  @Entity
    @Table(name="eplrules", schema="fastory")
    public class Rule {
        @Id 
        //@GeneratedValue (strategy=GenerationType.AUTO)
        @Column (name ="rule_id")
        private long ruleId;

        @Column (name ="rule")
        private String rule;

メインクラス

public static void main(String[] args) {        
        System.out.println("start");
        BasicConfigurator.configure();
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("UNIT");        

        Rule r = new Rule();
        r.setRuleId(103);
        r.setRuleName("SomeRuleName");
        r.setRule("SomeRule");

        EntityManager em = emf.createEntityManager();
        em.persist(r);
        Query q = em.createQuery("select p from Rule p");
        List<Rule> rules = q.getResultList();
        em.close();
        System.out.println(rules);
        System.out.println("stop");

        em.close();
        emf.close();


    }
4

2 に答える 2

2

私がこれを手に入れたとき、私はチェックしました:

 <class>package.name.DaoClass</class>

が persistence.xml で定義されていたので、これでエラーが解決しました。こちらもチェック

<property name="kundera.annotations.scan.package" value="package.name"/>

パッケージ名に正しく一致します。

于 2014-04-28T10:40:29.180 に答える
0

「kundega.rules.Rule」のパッケージ名は正しいですか?それとも「kundera.rules.Rule」ですか?

于 2014-02-07T19:14:38.323 に答える