如何纠正此映射异常(使用@OneToMany或@ManyToMany定位未映射的类)

Har*_*hna 2 spring hibernate

嗨,我得到一些映射异常请遵循以下错误

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.cmr.daos.child.domain.Child.medications[com.cmr.daos.child.domain.Medications]
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1185)
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:710)
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:645)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:65)
    at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1716)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1423)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:720)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
    ... 62 more
Run Code Online (Sandbox Code Playgroud)

我的域名类:

 public class Child extends AuditProperties implements java.io.Serializable {

@Expose private Long childId;
@Expose private String firstName;
@Expose private String lastName;

private Set<Allergies> allergies = new HashSet<Allergies>();

private Set<Medications> medications = new HashSet<Medications>();

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "child")
@JsonManagedReference
public Set<Medications> getMedications() {
    return this.medications;
}

public void setMedications(Set<Medications> medications) {
    this.medications = medications;
}

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "child")
@JsonManagedReference
public Set<Allergies> getAllergies() {
    return this.allergies;
}

public void setAllergies(Set<Allergies> allergies) {
    this.allergies = allergies;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "CHILD_ID", unique = true, nullable = false)
public Long getChildId() {
    return this.childId;
}

public void setChildId(Long childId) {
    this.childId = childId;
}
@Column(name = "FIRST_NAME", nullable = false, length = 64)
public String getFirstName() {
    return this.firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

@Column(name = "LAST_NAME", nullable = false, length = 64)
public String getLastName() {
    return this.lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}
Run Code Online (Sandbox Code Playgroud)

}

Here my mapped classs:

public class Medications extends AuditProperties implements java.io.Serializable{
@Expose private Long medicationId;
@Expose private String hasMedication;
@Expose private String medicationType;
@Expose private transient Child child;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "CHILD_ID")
@JsonBackReference
public Child getChild() {
    return child;
}


public void setChild(Child child) {
    this.child = child;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "MEDICATION_ID", unique = true, nullable = false)
public Long getMedicationId() {
    return medicationId;
}


public void setMedicationId(Long medicationId) {
    this.medicationId = medicationId;
}

@Column(name = "HAS_MEDICATION", nullable = false, length = 3)
public String getHasMedication() {
    return hasMedication;
}


public void setHasMedication(String hasMedication) {
    this.hasMedication = hasMedication;
}

@Column(name = "MEDICATION_TYPE", length = 64)
public String getMedicationType() {
    return medicationType;
}


public void setMedicationType(String medicationType) {
    this.medicationType = medicationType;
}
}

Here another mapped class:
 @Entity
 @Table(name = "ALLERGIES")
 public class Allergies extends AuditProperties implements java.io.Serializable {
 @Expose private Long allergyId;
@Expose private String hasAllergies;
@Expose private String allerigyType;
@Expose private transient Child child;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "CHILD_ID")
@JsonBackReference
public Child getChild() {
    return child;
}

public void setChild(Child child) {
    this.child = child;
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "ALLERGY_ID", unique = true, nullable = false)
public Long getAllergyId() {
    return allergyId;
}
public void setAllergyId(Long allergyId) {
    this.allergyId = allergyId;
}

@Column(name = "HAS_ALLERGIES", length = 3)
public String getHasAllergies() {
    return hasAllergies;
}
public void setHasAllergies(String hasAllergies) {
    this.hasAllergies = hasAllergies;
}

@Column(name = "ALLERIGY_TYPE", length = 20)
public String getAllerigyType() {
    return allerigyType;
}
public void setAllerigyType(String allerigyType) {
    this.allerigyType = allerigyType;
}
Run Code Online (Sandbox Code Playgroud)

}

在这里我提到了一个孩子类,过敏类和药物类.这里我将孩子对象映射到两个类(过敏,药物治疗)然后我会得到这个例外.请帮助我这个例外

Cha*_*nya 5

正如例外所说:

Use of @OneToMany or @ManyToMany targeting an unmapped class: 
com.cmr.daos.child.domain.Child.medications[com.cmr.daos.child.domain.Medications]
Run Code Online (Sandbox Code Playgroud)

Hibernate是试图找到实体Medications代表的财产medications在你的Child班级.

看一下etities一切看起来都不错,所以我假设你错过@EntityMedications上课的地方,或者你错过了在hibernate.cfg.xml文件中提到这个实体.