java jpa子图和MappedSuperclass抛出未知实体
我对子图有一个愚蠢的问题。这是我第一次使用实体图
我的公共库中有以下类:
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.ManyToMany;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public abstract class NamedDomainObjectWithFiles extends NamedDomainObject {
/**
*
*/
private static final long serialVersionUID = 1L;
@ManyToMany(cascade = CascadeType.ALL)
private Set<File> files;
public Set<File> getFiles() {
return files;
}
public void setFiles(Set<File> files) {
this.files = files;
}
}
及
import java.util.Date;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph;
import javax.persistence.NamedEntityGraphs;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@NamedQueries({ @NamedQuery(name = File.findAll, query = "SELECT f FROM File f ORDER BY f.createdOn"),
@NamedQuery(name = File.findByName, query = "SELECT f FROM File f WHERE f.name = :name") })
@NamedEntityGraphs({
@NamedEntityGraph(name = File.EG_LoadRoles, attributeNodes = { @NamedAttributeNode("roles") }),
@NamedEntityGraph(name = File.EG_LoadALL, includeAllAttributes=true)
})
@Entity
public class File extends NamedDomainObject{
/**
*
*/
private static final long serialVersionUID = 3696244073145217983L;
public static final String findByName = "File.findByName";
public static final String findAll = "File.findAll";
public static final String EG_LoadRoles = "File.EG_LoadRoles";
public static final String EG_LoadALL = "File.EG_LoadALL";
@ManyToMany
private Set<Role> roles;
@ManyToMany
private Set<FileCategory> fileCategories;
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
public Set<FileCategory> getFileCategories() {
return fileCategories;
}
public void setFileCategories(Set<FileCategory> fileCategories) {
this.fileCategories = fileCategories;
}
}
还有我战争中的昆德班
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph;
import javax.persistence.NamedEntityGraphs;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.NamedSubgraph;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import de.xxx.common.domain.Address;
import de.xxx.common.domain.NamedDomainObjectWithFiles;
@NamedQueries({ @NamedQuery(name = Kunde.findAll, query = "SELECT b FROM Kunde b where b.activ=1 ORDER BY b.name"),
@NamedQuery(name = Kunde.findByName, query = "SELECT b FROM Kunde b WHERE b.name = :name") })
@NamedEntityGraphs({
@NamedEntityGraph(name = Kunde.EG_loadAll,
attributeNodes = {
@NamedAttributeNode(value = "files", subgraph = Kunde.SG_filesLoadAll)
},
subgraphs = {
@NamedSubgraph(name = Kunde.SG_filesLoadAll,
attributeNodes = {
@NamedAttributeNode("roles"),
@NamedAttributeNode("fileCategories")
}
)
}
)
})
@Entity
public class Kunde extends NamedDomainObjectWithFiles {
/**
*
*/
private static final long serialVersionUID = -7339308550470317787L;
public static final String findByName = "Kunde.findByName";
public static final String findAll = "Kunde.findAll";
public static final String EG_loadAll = "Kunde.EG_loadAll";
public static final String SG_filesLoadAll = "Kunde.SG_filesLoadAll";
@OneToMany(cascade = CascadeType.ALL, mappedBy = "kunde", orphanRemoval = true)
private List<Objekt> objekte;
public Kunde() {
}
public List<Objekt> getObjekte() {
return objekte;
}
public void setObjekte(List<Objekt> objekte) {
this.objekte = objekte;
}
}
在我尝试激活子图“Kunde”之前,一切正常。我班上的学生都是学生。在启动期间,我遇到以下异常:
org.hibernate.MappingException: Unknown entity: de.xxx.common.domain.NamedDomainObjectWithFiles
如果我只设置
@NamedEntityGraph(name = Kunde.EG_loadAll,
attributeNodes = {
@NamedAttributeNode(value = "files")
}
启动期间不会引发异常
我希望你能帮助我
我在wildfly 8.1和9.0.1上用相同的结果测试了这段代码
迈克尔
@Edit:
这是我的坚持。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="primary">
<jta-data-source>java:jboss/datasources/ObjektmanagementDS</jta-data-source>
<jar-file>lib/common-0.0.1.jar</jar-file>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/objektmanagement?UseUnicode=true&characterEncoding=utf8" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
共 (0) 个答案