1

我使用 Kundera 收到错误“No Entity metadata found for the class”一个类似的问题在这里, No Entity metadata found for the class but didn't find an answer(答案将 META-INF 放入类目录,对我没有帮助.

这是我得到的错误

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)

所以这是我的文件。 持久性.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
    @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 回答