Dmitrii  Rogozin
Dmitrii Rogozin

Reputation: 63

Kundera No Entity metadata found for the class

I get an error "No Entity metadata found for the class" using Kundera a similiar question is here, No Entity metadata found for the class but didn't find an answer (answer put META-INF into classes dir, didn't help me.

This is the error I get

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)

So here is my files. 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>

Start of Entity class

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

Main class

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


    }

Upvotes: 1

Views: 1225

Answers (2)

devl
devl

Reputation: 429

When I got this I checked:

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

was defined in persistence.xml, this resolved the error. Also check

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

matches correctly to your package name.

Upvotes: 2

vivek mishra
vivek mishra

Reputation: 1162

"kundega.rules.Rule" package name is correct? Or is it "kundera.rules.Rule" ?

Upvotes: 0

Related Questions