2012-05-02 2 views
1

으로 복잡한 클래스를 사용 :최대 절전 모드 : 나는 다음을 수행하려고 특성

코스는 내가 만든 다른 클래스
public class Distance { 

private Course courseA, courseB; 
private int minDistance; 
double cost; 


private Long id; 


public Distance() { 
    super(); 
} 

public Distance(Course courseA, Course courseB, int minDistance, double cost) { 
    super(); 
    this.courseA = courseA; 
    this.courseB = courseB; 
    this.minDistance = minDistance; 
    this.cost = cost; 
} 


@Override 
public String toString() { 
    return "Distance [courseA=" + courseA + ", courseB=" + courseB 
      + ", MinDistance=" + minDistance + ", Cost=" + cost + "]"; 
} 

public Course getCourseA() { 
    return courseA; 
} 

public void setCourseA(Course courseA) { 
    this.courseA = courseA; 
} 

public Course getCourseB() { 
    return courseB; 
} 

public void setCourseB(Course courseB) { 
    this.courseB = courseB; 
} 

public int getMinDistance() { 
    return minDistance; 
} 

public void setMinDistance(int minDistance) { 
    this.minDistance = minDistance; 
} 

public double getCost() { 
    return cost; 
} 

public void setCost(double cost) { 
    this.cost = cost; 
} 

@Id 
public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

} 

:

public class Course { 


private Long id; 

private String name; 

private Calendar date; 

public Course() { 
    super(); 
} 
public Course(Long id,String name, Calendar date) { 
    super(); 
    this.id = id; 
    this.name = name; 
    this.date = date; 
} 

@Override 
public String toString() { 
    return "Course [id=" + id + ", name=" + name + ", examDate=" + date 
      + "]"; 
} 

@Id 
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public Calendar getDate() { 
    return date; 
} 
public void setDate(Calendar date) { 
    this.date = date; 
} 
/* (non-Javadoc) 
* @see java.lang.Object#hashCode() 
*/ 
@Override 
public int hashCode() { 
    final int prime = 31; 
    int result = 1; 
    result = prime * result + ((id == null) ? 0 : id.hashCode()); 
    return result; 
} 
/* (non-Javadoc) 
* @see java.lang.Object#equals(java.lang.Object) 
*/ 
@Override 
public boolean equals(Object obj) { 
    if (this == obj) { 
     return true; 
    } 
    if (obj == null) { 
     return false; 
    } 
    if (!(obj instanceof Course)) { 
     return false; 
    } 
    Course other = (Course) obj; 
    if (id == null) { 
     if (other.id != null) { 
      return false; 
     } 
    } else if (!id.equals(other.id)) { 
     return false; 
    } 
    return true; 
} 

}

나는 물론이지를 정의하는 시도는하고 B "distance.hbm.xml"에서 거리의 속성으로하지만 그냥 예외와 함께 저에게 소리 쳤다 : org.hibernate.MappingException: Could not determine type for: database.datatypes.Course at table:distances...
나는 courseA Nd B를 "성공"했지만, session.load(Distance.class,1L)을 호출하면 올바른 개체가 반환되었지만 두 코스는 null 포인터였습니다.

어떻게 정의 할 수 있습니까?! 또한

, 나는 동일한 기능을 수행 할 수있는 방법,하지만 라이브러리에서 복잡한 클래스

감사 (java.util의에서 무엇인가)!

업데이트 : 나는 내 케이크를 먹을 수있는 방법을 찾았고 Distance-Course 물건에서 그 주위를 돌아 다니는 길을 찾았지만 나와 함께 일하는 것이 중요합니다. 코스에는 날짜 개체가 있어야합니다. 차라리 java.util.Calendar를 사용하고 싶지만 문제가있는 경우 대신 사용할 수있는 다른 방법이 있습니까?

다시 한번 감사드립니다! 그것은 어떤 차 키가해서는 안

@Embeddable 
public class Address implements Serializable{ 

@Transient 
public Long getId() { 
    return id; 
} 

@Column 
public String getName() { 
    return name; 
} 

} 

@Embaddable 클래스는 개체되지 않습니다 : 이제 포함 가능한 클래스

@Entity 
@Table(name="distance") 
public class Distance { 

private Course courseA, courseB; 

@Embedded 
public getCourseA(){ 
return this.courseA; 
} 

@Embedded 
public getCourseB(){ 
return this.courseB; 
} 

} 

:

답변

1

당신은 그것을 다음과 같은 방법을 얻을 수 있습니다. 이것이 이유가 무엇입니까 @Transient id 속성

+0

하지만이 과정은 거리의 일부라는 뜻이 아닙니까? 나는 물론 스스로 테이블을 만들고 싶다. 심지어 가능하다면. –

+0

예, 이것이 의미하는 바입니다. 코스는 거리의 일부입니다. 그렇지 않으면 당신은 최대 절전 모드 규칙을 제동하고 있습니다. 각 엔티티는 테이블과 기본 키를 가지고 있고 코스가 자체 테이블을 가지고 있고 기본 키 (@Id)를 가지고 있기 때문에 별도의 엔티티라고 가정합니다. –

+0

하나의 작은 것 : "course"대신에 java.util 라이브러리에서 뭔가를 사용하여 어떻게 동일한 작업을 수행 할 수 있습니까? 아니면 유일한 방법은 내 물건에 포장하는 것입니까? –