Кундера Для класса не найдены метаданные Entity

Я получаю сообщение об ошибке «Метаданные объекта не найдены для класса», используя Кундера, аналогичный вопрос здесь, Для класса не найдены метаданные Entity, но ответ не найден (ответ поместил 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)

Итак, вот мои файлы. 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();


    }

person Dmitrii Rogozin    schedule 07.02.2014    source источник


Ответы (2)


Когда я получил это, я проверил:

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

был определен в файле persistence.xml, это устранило ошибку. Также проверьте

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

правильно соответствует имени вашего пакета.

person devl    schedule 28.04.2014
comment
твой ответ очень запутан - person Kuldeep Dangi; 01.12.2017

Имя пакета "kundega.rules.Rule" правильное? Или это "kundera.rules.Rule"?

person vivek mishra    schedule 07.02.2014
comment
Да, это орфографическая ошибка, но она не влияет, потому что в файле persistence.xml я использую вариант с ошибкой. - person Dmitrii Rogozin; 10.02.2014
comment
Причина: java.lang.IllegalArgumentException: объект Entity недействителен, операция не удалась. Подробности см. в предыдущем сообщении журнала. Эта ошибка может быть вызвана только в том случае, если сущность недействительна и не связана с единицей сохраняемости или вы не установили поле, аннотированное с помощью @Id. - person vivek mishra; 14.02.2014
comment
Кроме того, проверьте свою сущность на соответствие github.com/impetus-opensource/ Кундера/вики/ - person vivek mishra; 18.02.2014