Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类package.X使用非实体package.Y作为关系属性字段listOfQuestions中的目标实体_Java_Jpa - Fatal编程技术网

Java 类package.X使用非实体package.Y作为关系属性字段listOfQuestions中的目标实体

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

我正在尝试在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.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
指向不同的类<代码>测验
答案
因此不“非法”。