EclipseLink - 未找到元模型中密钥类[CurriculumTree]的[EntityType]

时间:2013-04-12 13:15:36

标签: java tomcat jpa-2.0 persistence.xml

在部署到tomcat后,我在我的axis2 Web服务中获得以下内容。

java.lang.IllegalArgumentException: No [EntityType] was found for the key class [VOs.CurriculumTree] in the Metamodel - please verify that the [Entity] class was referenced in persistence.xml using a specific <class>VOs.CurriculumTree</class> property or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element.

当我从eclipse运行时,JPA工作正常。我已经在persistence.xml中定义了实体,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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">
    <persistence-unit name="NewAge-Test" transaction-type="RESOURCE_LOCAL">
        <class>VOs.CurriculumTree</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/contentserver_development"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="quadfusion"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        </properties>
    </persistence-unit>
</persistence>

这是我的实体类:

@Entity
@Table(name="curriculum_trees")
public class CurriculumTree implements NodeInfo, Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    @LevelColumn
    @Column(name="depth",updatable=false)
    private int level;

    @Lob
    private String description;

    @LeftColumn
    @Column(updatable=false)
    private int lft;

    private String name;

    @Column(name="node_type")
    private String nodeType;

    @Column(name="parent_id")
    private int parentId;

    private int position;

    private boolean prassoTopicGroup;

    @RightColumn
    @Column(updatable=false)
    private int rgt;

    @RootColumn
    private int rootId;

    public CurriculumTree() {
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getLft() {
        return this.lft;
    }

    public void setLft(int lft) {
        this.lft = lft;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNodeType() {
        return this.nodeType;
    }

    public void setNodeType(String nodeType) {
        this.nodeType = nodeType;
    }

    public int getParentId() {
        return this.parentId;
    }

    public void setParentId(int parentId) {
        this.parentId = parentId;
    }

    public int getPosition() {
        return this.position;
    }

    public void setPosition(int position) {
        this.position = position;
    }

    public boolean getPrassoTopicGroup() {
        return this.prassoTopicGroup;
    }

    public void setPrassoTopicGroup(boolean prassoTopicGroup) {
        this.prassoTopicGroup = prassoTopicGroup;
    }

    public int getRgt() {
        return this.rgt;
    }

    public void setRgt(int rgt) {
        this.rgt = rgt;
    }

    @Override
    public int getLeftValue() {
        return getLft();
    }

    @Override
    public int getRightValue() {
        return getRgt();
    }

    @Override
    public int getLevel() {
        return this.level;
    }

    @Override
    public int getRootValue() {
        return 0;
    }

    @Override
    public void setLeftValue(int value) {
        setLft(value);
    }

    @Override
    public void setRightValue(int value) {
        setRgt(value);
    }

    @Override
    public void setLevel(int level) {
        this.level = level;
    }

    @Override
    public void setRootValue(int value) {
        // TODO Auto-generated method stub
    }

    @Override public String toString() {
        return "[Curriculum Node: id=" + this.id + ", name=" + this.name + "-" + super.toString() + "]";
    }

}

我尝试了<exclude-unlisted-classes>false</exclude-unlisted-classes>中包含标记persistence.xml的备用广告,但它没有任何好处。

3 个答案:

答案 0 :(得分:0)

删除对<class>com.hm.newAge.VOs.CurriculumTree</class>

的引用

并将属性<exclude-unlisted-classes>false</exclude-unlisted-classes>

答案 1 :(得分:0)

错误报告VOs.CurriculumTree,但在您的持久性xml中,com.hm.newAge.VOs.CurriculumTree存在包问题。

答案 2 :(得分:0)

如果您没有使用托管持久性单元,请尝试在使用后关闭实体管理器工厂。