2012-02-16 2 views
0

У меня есть четыре стола.Как присоединиться к таблице с JPA?

ZipCode

ZipCode (ПК)

townCode

Город

townCode (ПК)

townName

CityCode

Город

CityCode (ПК)

CityName

prefectureCode

префектура

prefectureCode (ПК)

prefectureName

Я хочу, чтобы получить все параметры только разыскиваемого ZipCode. Теперь я написал этот код.

@Entity 
public class ZipCode extends GenericModel { 
@Id 
@Column(length = 7, nullable = false) 
public String zipCode; 
@Column(length = 8, nullable = false) 
public String townCode; 
@ManyToMany(targetEntity=Town.class) 
@JoinTable(name="town") 
@JoinColumn(referencedColumnName="townCode",insertable=true,table="town",name="townCode") 
public Set<Town> towns; 

@Entity 
public class Town extends GenericModel { 
@Id 
@Column(length = 8, nullable = false) 
public String townCode; 
@Column(length = 255, nullable = false) 
public String townName; 
@Column(length = 5, nullable = false) 
public String cityCode; 
@ManyToMany(mappedBy="townCode") 
public Set<ZipCode> zipCode; 

и я исполню это,

Список Почтовые индексы = ZipCode.find ("почтовый индекс =?", Почтовый индекс) .fetch();

TableStatus есть

ZipCode ZipCode (PK) | townCode 1111111 | 123

Город townCode (PK) | Городское имя | cityCode 123 | tokyo | 12345

Я хочу, чтобы получить все параметры, но ответ только статус ZipCode ...

Скажите, пожалуйста, как получить все параметры.

Помогите мне!

+0

Определены ли вы классы сущностей для города и префектуры? Что означает u по всем параметрам? – Rocky

+0

Мнение: Город и префектура пока не определены. – user1212872

+0

все параметры для ZipCode townCode townName CityCode CITYNAME prefectureCode prefectureName эти параметры. – user1212872

ответ

0

Как и вы определили сопоставление между zipCode и Town, вам необходимо предоставить сопоставление между городом и городом, а также между городом и префектурой.

После того, как вы это сделаете, вы сможете получить все города для почтового индекса и из города, где сможете получить город и город, вы сможете получить префектуру на ваших столах, я не вижу многие ко многим отношений между ZipCode и таблицы, поэтому вы могли бы рассмотреть вопрос об изменении его многие к одному

public class Zipcode { 
// all the other attributes 
// Provide the mappings via annotation 
public Town town ; 

} 

public class Town { 
// all the other attributes 
// provide the mappings via annotation 
public City city ; 
} 

public class City { 
// all the other attributes 
// Provide the mappings via annotation 
public Prefecture prefecture ; 

} 

public class Prefecture { 
// all the other attributes 

} 

и наконец

List zipcodes = ZipCode.find("zipcode = ? ", zipcode).fetch(); 
foreach(Zipcode zip : zipcodes) { 
    zip.getTown() // to get the town 
    zip.getTown().getCity() // to get the city 
    zip.getTown().getCity().getPrefecture() // to get the Prefecture 
} 

желательно, чтобы идти для ленивой загрузки, если вы не собираетесь к нам е все детали каждый раз.

+0

спасибо Mr.Rocky !! но я не понимаю, как использовать аннотацию ... Не могли бы вы рассказать мне, какую аннотацию следует использовать? – user1212872

+0

Вы можете прочитать, как использовать аннотации для отображения объектов здесь - http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#entity-mapping-association. Вам необходимо использовать Много к одному картирование – Rocky

+0

Большое спасибо Mr.Rocky !! JPA так сложно для меня ... В этом случае (между ZipCode и Town), который является владельцем? – user1212872

Смежные вопросы