繁体   English   中英

EclipseLink-在元模型中找不到键类[CurriculumTree]的[EntityType]

[英]EclipseLink - No [EntityType] was found for the key class [CurriculumTree] in the metamodel

部署到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() + "]";
    }

}

我尝试了替代方法,该方法在persistence.xml包含标签<exclude-unlisted-classes>false</exclude-unlisted-classes> ,但效果不佳。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM