Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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 @OneToOne或@ManyToOne引用未知实体_Java_Entity Framework_Hibernate_Jpa_Entity Relationship - Fatal编程技术网

Java @OneToOne或@ManyToOne引用未知实体

Java @OneToOne或@ManyToOne引用未知实体,java,entity-framework,hibernate,jpa,entity-relationship,Java,Entity Framework,Hibernate,Jpa,Entity Relationship,我试图在不同jar中的两个实体之间建立关系。 这是主项目中的第一个实体: @Entity(name = "StdyDtlLabelBean") @Table(name = "STDY_DTL_LABEL") public class StdyDtlLabelBean implements Serializable { @EmbeddedId private StdyDtlLabelBeanPk id; @ManyToOne(targetEntit

我试图在不同jar中的两个实体之间建立关系。 这是主项目中的第一个实体:

    @Entity(name = "StdyDtlLabelBean")
    @Table(name = "STDY_DTL_LABEL")
    public class StdyDtlLabelBean implements Serializable {
    @EmbeddedId
    private StdyDtlLabelBeanPk id;

    @ManyToOne(targetEntity = StdyDtlSubject.class)
    @JoinColumns({
        @JoinColumn(name="STUDY_ID", insertable = false, updatable = false, referencedColumnName="STUDY_ID"),
        @JoinColumn(name="SUBJECT_ID", insertable = false, updatable = false, referencedColumnName="SUBJECT_ID")
    })
    private StdyDtlSubject subject;
//getters and setters

}
这是一个实体,作为jar文件存在于库项目中:

@Entity
@Table(name = "STDY_DTL_SUBJECT")
public class StdyDtlSubject implements Serializable {

    private static final long serialVersionUID = 2479124604L;

    public StdyDtlSubject() {
    }

    @EmbeddedId
    private StdyDtlSubjectPK key;

//getters and setters
}

@Embeddable
public class StdyDtlSubjectPK implements Serializable {

    private static final long serialVersionUID = 6691432687933341920L;
    @Column(name = "STUDY_ID")
    private Integer studyId;
    @Column(name = "SUBJECT_ID")
    private String subjectId;

    public StdyDtlSubjectPK() {
    }
以下是持久性单元:

<persistence-unit name="stdyPersistence" transaction-type="RESOURCE_LOCAL">
        <jta-data-source>java:comp/env/jdbc/OraclePooledDS</jta-data-source>
        <class>com.ctasc.ctpm.jpa.StdyDtlSubject</class>
        <class>stdy.brms.beans.StdyDtlLabelBean</class>

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
但如果我从StdyDtlLabelBean实体中删除关系注释并在StdyDtlSubject实体上创建命名查询。这些命名查询工作正常。另外,如果我将StdyDtlSubject类复制到我的主项目中,它也可以正常工作。只有当我把它们之间的关系放在一起时,我才会得到这个错误

我试着加上

<jar-file>ctpm.jar</jar-file>
<jar-file>lib/ctpm.jar</jar-file>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<property name="hibernate.archive.autodetection" value="class, hbm" />
<property name="packagesToScan" value="com.ctasc.ctpm.jpa" /> 
ctpm.jar
lib/ctpm.jar
假的

他们都没有帮我解决这个问题。您能提出一些解决这个问题的建议吗?

请确保您想要关联的jar的META-INF中有一个perssence.xml,jar中的所有实体都已登记。

谢谢@hragheb!我的主项目中只有一个persistence.xml。我声明了persistence.xml中的所有实体,即作为库jar添加的main和2nd项目。我的第二个项目中没有persistence.xml。我真的必须在每个项目中都有实体吗?获取这些实体并读取数据没有问题。但当我尝试在两个不同的项目中放置实体之间的关系时,我得到了未知实体错误
<jar-file>ctpm.jar</jar-file>
<jar-file>lib/ctpm.jar</jar-file>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<property name="hibernate.archive.autodetection" value="class, hbm" />
<property name="packagesToScan" value="com.ctasc.ctpm.jpa" />