Kundera没有为该课程找到实体元数据

时间:2014-02-07 14:44:29

标签: persistence.xml kundera

我使用类似的Kundera收到错误“找不到该类的实体元数据” 问题在这里, No Entity metadata found for the class  但没有找到答案(答案把META-INF放到课堂上,dir,没帮我。

这是我得到的错误

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
    @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();


    }

2 个答案:

答案 0 :(得分:1)

当我得到这个时,我检查了一下:

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

在persistence.xml中定义,这解决了错误。还要检查

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

正确匹配您的包名。

答案 1 :(得分:0)

“kundega.rules.Rule”包名是否正确?还是“kundera.rules.Rule”?