Java 类package.X使用非实体package.Y作为关系属性字段listOfQuestions中的目标实体
我正在尝试在eclipse中创建连接derby数据库的web应用程序。我在项目facets中添加了JPA facet。当我试图从实体生成表时,我得到一个错误。下面是stacktrace的第一位:Java 类package.X使用非实体package.Y作为关系属性字段listOfQuestions中的目标实体,java,jpa,Java,Jpa,我正在尝试在eclipse中创建连接derby数据库的web应用程序。我在项目facets中添加了JPA facet。当我试图从实体生成表时,我得到一个错误。下面是stacktrace的第一位: Exception in thread "main" Local Exception Stack: Exception [EclipseLink-30005] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.p
Exception in thread "main" Local Exception Stack:
Exception [EclipseLink-30005] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: org.eclipse.persistence.dynamic.DynamicClassLoader@2a742aa2
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [lv10example] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class ba.fet.rwa.lv10.domain.Answer] uses a non-entity [class ba.fet.rwa.lv10.domain.Question] as target entity in the relationship attribute [field listOfQuestions].
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:127)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:107)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:177)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.buildEntityManagerFactory(Main.java:94)
at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.execute(Main.java:80)
at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.main(Main.java:68)
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [lv10example] failed.
代码如下:
@Entity
public class Answer {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
@Column(name = "id")
private int id;
private String text;
private boolean correctStatus;
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="QuestionAnswer",joinColumns=@JoinColumn(name="answerID",
referencedColumnName="id"), inverseJoinColumns=@JoinColumn(name="questionID",
referencedColumnName="id"))
private Collection<Question> listOfQuestions;
public Answer() {
id=0;
text="";
correctStatus=false;
listOfQuestions=null;
}
public Answer(int _id, String _text, boolean _correctStatus,Question question){
id=_id;
text=_text;
correctStatus=_correctStatus;
listOfQuestions.add(question);
}
... Getters and setters ...
}
@实体
公开课答案{
@身份证
@GeneratedValue(策略=GenerationType.TABLE)
@列(name=“id”)
私有int-id;
私有字符串文本;
私人身份;
@ManyToMany(cascade=CascadeType.PERSIST)
@JoinTable(name=“QuestionAnswer”,joinColumns=@JoinColumn(name=“answerID”,
referencedColumnName=“id”),inverseJoinColumns=@JoinColumn(name=“questionID”,
referencedColumnName=“id”))
私人收集问题清单;
公众答覆({
id=0;
text=“”;
正确状态=错误;
listOfQuestions=null;
}
公共答案(整数id、字符串文本、布尔值状态、问题){
id=_id;
text=_text;
correctStatus=\u correctStatus;
问题列表。添加(问题);
}
…能手和二传手。。。
}
这是另一节课:
@Entity
@Table(schema = "TEST")
public class Question {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
@Column(name = "id")
private int id;
private String text;
private boolean answered;
private int points;
@ManyToMany(mappedBy="listOfQuestions")
private Collection<Quiz> listOfQuizzes;
@ManyToMany(mappedBy="listOfQuestions")
private Collection<Answer> listOfAnswers;
public Question() {
id=0;
text="";
answered=false;
points=0;
listOfAnswers=null;
}
public Question(int _id,String _text, int _points,Answer answer){
id=_id;
text=_text;
answered=false;
points=_points;
listOfAnswers.add(answer);
}
... Getters and setters ...
}
@实体
@表(schema=“TEST”)
公开课问题{
@身份证
@GeneratedValue(策略=GenerationType.TABLE)
@列(name=“id”)
私有int-id;
私有字符串文本;
二等兵回答;
私人积分;
@许多(mappedBy=“问题列表”)
私人收集测验清单;
@许多(mappedBy=“问题列表”)
私人收集答案清单;
公众问题({
id=0;
text=“”;
回答=错误;
分值=0;
ListofAnwers=null;
}
公共问题(整数id、字符串文本、整数点、答案){
id=_id;
text=_text;
回答=错误;
分数=_分;
答案列表。添加(答案);
}
…能手和二传手。。。
}
下面是persistence.xml
<?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="lv10example">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<!-- <exclude-unlisted-classes>false</exclude-unlisted-classes> -->
<class>ba.fet.rwa.lv10.domain.Quiz</class>
<class>ba.fet.rwa.lv10.domain.Question</class>
<class>ba.fet.rwa.lv10.domain.Answer</class>
<class>ba.fet.rwa.lv10.domain.LoggedStatus</class>
<class>ba.fet.rwa.lv10.domain.Result</class>
<class>ba.fet.rwa.lv10.domain.User</class>
<properties>
<property name="eclipselink.ddl-generation" value="create-or-extend-tables" />
<!-- property name="eclipselink.ddl-generation" value="drop-and-create-tables" /-->
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:derby://localhost:1527/sample;create=true" />
<property name="javax.persistence.jdbc.user" value="test" />
<property name="javax.persistence.jdbc.password" value="test" />
</properties>
</persistence-unit>
</persistence>
org.eclipse.persistence.jpa.PersistenceProvider
ba.fet.rwa.lv10.domain.quick
ba.fet.rwa.lv10.domain.Question
ba.fet.rwa.lv10.domain.Answer
ba.fet.rwa.lv10.domain.LoggedStatus
ba.fet.rwa.lv10.domain.Result
ba.fet.rwa.lv10.domain.User
有人能帮我吗?这里肯定有个错误,但我找不到。也许是jpa方面的问题?从现在起我试着调试了两天,但没有成功。对不起,我的英语不好。谢谢!:-) 问题实体中是否有其他方法具有某种逻辑?i、 e.等于/哈希代码。如果是,请将它们添加到问题中。首先,您在两个不同关系的
mappedBy
属性中使用了相同的字段listOfQuestions
。这在JPAOk中是非法的,但我有另一个名为quick的类,它有listOfQuestion字段(属于该测验的问题列表)。我必须以某种方式映射它,我不知道…@MaciejKowalski不,除了getter和setter之外,我没有任何其他方法可以用于now@crizzis,由映射的2指向不同的类<代码>测验
和答案
因此不“非法”。