部署到 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
它没有任何好处。