2011-09-23 2 views
1

내 데이터베이스 테이블에 합류했다.봄 최대 절전 모드 액세스 데이터베이스 필드를

public Weather getWeatherById(Integer id) { 
    return (Weather) sessionFactory.getCurrentSession().get(Weather.class, id); 
} 

컨트롤러 :

model.addAttribute("weather", weatherService.getWeatherById(id)); 

질문 - 그래서 이것은 컨트롤러에 반환됩니다, JSP로 전송

@Entity 
@Table(name="CITIES") 
public class City { 

    @Id 
    @Column(name="ID") 
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "CITIES_ID_SEQ") 
    @SequenceGenerator(name = "CITIES_ID_SEQ", sequenceName="cities_id_seq", allocationSize=1) 
    private Integer id; 

    @Column(name="NAME") 
    private String name; 
     //here come getters and setters 

DAO 예를 City.java에 대한

그렇다면 JSP에서 cities.name에 어떻게 액세스 할 수 있습니까? 아니면 특별한 쿼리 없이는 불가능합니다.

+0

은 날씨 추상화의 도시의 일부인가? 그렇다면 거기에 액세스 할 수 있으며 거기에서 이름을 얻을 수 있습니다. – mkro

+0

@mkro : 추상화에서의 의미는 무엇입니까? – Jaanus

+0

@ danny.lesnik의 대답은 다음과 같습니다 : 날씨 정보에 대한 수업이 필요하며 그 수업은 도시와 연결되어야합니다. – mkro

답변

2

이 두 개체는 일대일로 일대일로 연관성이 있어야합니다.

public class City{ 

@One-To-One 
private Weather weather; 

} 

두 번째 클래스 :

public class Weather { 

@One-to-One 
private City city; 

} 

는 다음 도시를 가져오고 getWeather를 사용하여 날씨()를 얻거나 당신이 날씨를 가져오고 그 도시를 얻을 수 있습니다.

또는, 도시 가져 오기 위해 HQL 문을 조인을 사용 할 수 있습니다

from City c join c.weather wheather where wheather.id = :id . 
+0

데이터베이스에서 아무 것도 변경해야합니까? 아니면'city_id'가 int에 남아있을 수 있습니까? 아니면 데이터베이스에 관계를 만들어야합니까? 이 두 테이블을 가지고있는 순간,'cities.id = weather.city_id' 만 알게 될 것입니다. – Jaanus

+0

Acctually Hibernate는 당신에게 필요한 모든 작업을 할 수 있습니다. 정확한 releationship을 만들어야합니다. 일대일 관계에 대해 당신이 그림을 지울 수 있습니다 : http : //www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example-annotation/ –

0

Actualy를, 이것은 나에게 일대일 관계처럼 보이지만하지 않습니다 오히려 대일. 하여 어린이를위한 다음 사용해보십시오 :

public class Weather { 

@Many-to-One 
private City city; 

} 

부모에 대한

:

public class City{ 

@One-To-Many 
private Weather weather; 

} 
관련 문제