Как присоединиться к таблице с JPA? - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть четыре таблицы.

ZipCode

zipCode (PK)

townCode

Город

townCode (PK)

townName

cityCode

City

cityCode (PK)

cityName

код префектуры

префектура

код префектуры (PK)

префектураName

хочучтобы получить все параметры, которые ищутся только по 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;

и выполнил это,

List zipcodes = ZipCode.find ("zipcode =?", Zipcode) .fetch ();

TableStatus is,

ZipCode zipCode (PK) |код города 1111111 |123

Town townCode (PK) |townName |cityCode 123 |Токио |12345

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

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

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

1 Ответ

0 голосов
/ 16 февраля 2012

Так же, как вы определили отображение между 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 
} 

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

...