Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 我是否在JPA中正确使用了多个映射?_Java_Database_Jpa - Fatal编程技术网

Java 我是否在JPA中正确使用了多个映射?

Java 我是否在JPA中正确使用了多个映射?,java,database,jpa,Java,Database,Jpa,我正在做一个学校项目,目标是为一个虚构的药店制作一个JavaEE应用程序 由于一种药物可以治疗一种或多种疾病,而一种疾病可以用一种或多种药物治疗,因此我认为在药物方面是一种@OneToMany关系,在疾病方面是一种@ManyToMany关系。 我还有一个患者实体。一个病人可能患有一种或多种疾病,一种疾病可能折磨许多病人。我按如下方式编码我的类,但是当我试图从实体生成表时,我的药物和疾病类之间出现了不兼容的映射异常。我在Eclipse中使用一个GlassFish服务器和一个Derby连接(一切都配

我正在做一个学校项目,目标是为一个虚构的药店制作一个JavaEE应用程序

由于一种药物可以治疗一种或多种疾病,而一种疾病可以用一种或多种药物治疗,因此我认为在
药物方面是一种
@OneToMany
关系,在
疾病方面是一种
@ManyToMany
关系。
我还有一个
患者
实体。一个病人可能患有一种或多种疾病,一种疾病可能折磨许多病人。我按如下方式编码我的类,但是当我试图从实体生成表时,我的
药物
疾病
类之间出现了不兼容的映射异常。我在Eclipse中使用一个GlassFish服务器和一个Derby连接(一切都配置得很好,所以这肯定是一个代码问题)。我的课程如下:

public class Drug implements Serializable{
@OneToMany(targetEntity = Disease.class, mappedBy = "Cures_For_This_Disease")
private List<Disease> Diseases_Cured_By_This_Drug;
//other fields such as the name, price and origin of the drug
}

public class Disease implements Serializable{
@ManyToMany(targetEntity = Drug.class)
private List<Drug> Cures_For_This_Disease;
@ManyToMany(targetEntity = Patient.class)
private List<Patient> Afflicted_Patients;
//other fields such as name of disease etc.
}

public class Patient implements Serializable{
@OneToMany(targetEntity = Disease.class, mappedBy = "AfflictedPatients")
private List<Disease> Current_Diseases;
//other fields such as Patient name, social sec. nubmer etc
}
公共类药物实现可序列化{
@OneToMany(targetEntity=Disease.class,mappedBy=“治愈该疾病”)
私人列出了使用该药物治愈的疾病;
//药物名称、价格和产地等其他字段
}
公共类实现可序列化{
@许多(targetEntity=Drug.class)
私人列表治疗这种疾病;
@ManyToMany(targetEntity=Patient.class)
受折磨的_患者的私人名单;
//其他领域,如疾病名称等。
}
公共类Patient实现可序列化{
@OneToMany(targetEntity=Disease.class,mappedBy=“受影响患者”)
私人列表当前疾病;
//其他字段,如患者姓名、社交密码等
}

我做错了什么

Drug
Patient
类中,您应该有
@manytomy
注释

public class Drug implements Serializable{
    @ManyToMany
    private List<Disease> Diseases_Cured_By_This_Drug;

}

public class Disease implements Serializable{
    @ManyToMany(mappedBy="Diseases_Cured_By_This_Drug")
    private List<Drug> Cures_For_This_Disease;
}
公共类药物实现可序列化{
@许多
私人列出了使用该药物治愈的疾病;
}
公共类实现可序列化{
@许多(mappedBy=“疾病通过这种药物治愈”)
私人列表治疗这种疾病;
}

这应该在两个对应的表之间创建一个联接表。

“但是我得到了一个不兼容的映射异常”在这里发布这些异常。我的类是用塞尔维亚语命名的,但下面的翻译是:Lek=Drug,Oboljenje=Disease,Pacijent=Patient-Drug-Disease是多对多的,但是您启用了@OneToManyDrug@guido所以你是说双方都应该是多对多?是否需要任何额外的注释,如
@JoinTable
?许多注释都是另一边的注释;很多就是很多