【问题标题】:"[CompletionException: com.impetus.kundera.loader.MetamodelLoaderException: Error while retreiving and storing entity metadata]"“[CompletionException:com.impetus.kundera.loader.MetamodelLoaderException:检索和存储实体元数据时出错]”
【发布时间】:2017-01-24 07:09:15
【问题描述】:

我是 cassandra 的新手,正在尝试将使用 Kundera 3.5 的 cassandra 与我在 play framework(v2.3) 上的 java 应用程序集成。我已经浏览了this 文档。但我收到了这个错误。

    [CompletionException: com.impetus.kundera.loader.MetamodelLoaderException: Error while retreiving and storing entity metadata]

我在我的数据库中创建了必要的架构和列族。还有我的实体的罐子。谁能告诉我我错过了什么?

我的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="cassandra_pu">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<jar-file>entities.jar</jar-file>
<class>models.User</class>
<properties>
    <property name="kundera.nodes" value="127.0.0.1"/>
    <property name="kundera.port" value="9042"/>
    <property name="kundera.keyspace" value="KunderaExamples"/>
    <property name="kundera.dialect" value="cassandra"/>
    <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />
    <property name="kundera.cache.provider.class" value="com.impetus.kundera.cache.ehcache.EhCacheProvider"/>
    <property name="kundera.cache.config.resource" value="/ehcache-test.xml"/>
</properties>
</persistence-unit>
</persistence>

我的模型类 User.java

package models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "users", schema = "KunderaExamples@cassandra_pu")
public class User
{
    @Id
    private String userId;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName;

    @Column(name="city")
    private String city;

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getUserId() {
        return userId;
    }

    public String getCity() {
        return city;
    }

    public String getLastName() {
        return lastName;
    }

    public String getFirstName() {
        return firstName;
    }

}

【问题讨论】:

  • 你在entities.jar里放什么?
  • 还要确保entities.jar 中没有User 实体。
  • @devツ 将所有模型(现在只有用户模型)放在 target/scala/classes/models 目录下。

标签: java cassandra playframework-2.0 kundera


【解决方案1】:

错误可能是由于User 实体在&lt;class&gt; 标记和&lt;jar-file&gt; 标记中的两次声明。

试试这个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="cassandra_pu">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<class>models.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
    <property name="kundera.nodes" value="127.0.0.1"/>
    <property name="kundera.port" value="9042"/>
    <property name="kundera.keyspace" value="KunderaExamples"/>
    <property name="kundera.dialect" value="cassandra"/>
    <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />
</properties>
</persistence-unit>
</persistence>

【讨论】:

    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多