我正在努力解决这个问题。我有一个表“Cities”,它有一个指向表“Countries”的外键,表中的country_id引用了城市所在的国家。在我的Web应用程序中,我可以列出“Cities”表中的所有数据,但我找不到列出国家名称的方法。这是我的服务类方法。
public List<City> listAll() {
List<City> cities = repo.findAll();
return cities;
}
在“城市”实体中,我有一个字段“国家”,通过它我可以在方法名称中找到国家,但我不知道如何将它与城市一起返回。
增加:
@GetMapping("/cities")
public String getAllCities(Model model) {
List<City> listCities = service.listAll();
model.addAttribute("showListCities", listCities);
return "cities";
}
City.java:
package com.bookflight.BookFlight.gradovi;
import com.bookflight.BookFlight.drzave.Drzave;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "cities")
public class City {
@Id
@Column(name = "city_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false, length = 45, name = "city_name")
private String city_name;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "cou_id", referencedColumnName = "cou_id")
private Country countries;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getcity_name() {
return city_name;
}
public void setcity_name(String city_name) {
this.city_name = city_name;
}
public Countries getCountries() {
return countries;
}
public void setCountries(Country countries) {
this.countries = countries;
}
}
**注意:**这里的每个变量名都是我的母语,所以我逐字翻译,以便以后更好地理解您的解决方案。
1条答案
按热度按时间shyt4zoc1#
您已经将FetchType添加到@ManyToOne注解参数中:
并为每种获取类型提供简短说明:
FetchType.LAZY将仅对主表触发。如果在代码中调用具有父表依赖项的任何其他方法,则它将触发查询以获取该表信息。
FetchType.EAGER将直接创建所有表(包括相关父表)的联接。
您可以在city类中添加一个方法来返回您的国家名称,该方法将在视图层中可用: