2014-02-07 3 views
1

Я получаю сообщение об ошибке «Нет Entity метаданные найденных для класса» с помощью Кундера вопроса похож здесь, No Entity metadata found for the class , но не нашел ответ (ответ поместить META-INF в классы реж, не помогло мне.Кундер Нет Entity метаданных найдены для класса

Это ошибка я получаю

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


    } 

ответ

0

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

+0

Да, это орфографическая ошибка, но это не влияет, потому что в persistence.xml я использую ошибочный вариант. –

+0

Вызвано: java.lang.IllegalArgumentException: объект Entity недействителен, операция завершилась неудачно. Пожалуйста, проверьте предыдущее сообщение журнала для получения более подробной информации. . Эта ошибка может быть вызвана только в том случае, если сущность недействительна и не связывается с единицей постоянства, или вы не указали поле, аннотированное с помощью @Id –

+0

. Кроме того, проверьте свою сущность на https://github.com/ impetus-opensource/Kundera/wiki/Concepts # wiki-basic-rules –

1

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

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

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

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

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

+0

ваш ответ очень запутанный –

Смежные вопросы