【发布时间】:2018-08-22 10:49:21
【问题描述】:
我正在使用 Spring Data 和 postgresql。我在 City 命名实体 cals 中有 ManyToOne 映射。当我执行选择查询时,出现以下错误。
@Entity
@Table(name="\"City\"")
public class City implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="city_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer cityId;
@Column(name="city_name")
private String cityName;
@ManyToOne(fetch= FetchType.LAZY)
@JoinColumn(name="state_id")
private State state;
@Column(name="district_name")
private String districtName;
}
@Entity
@Table(name="\"State\"")
@NamedQuery(name="State.findAll", query="SELECT s FROM State s")
public class State implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="state_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer stateId;
@Column(name="state_name")
private String stateName;
@ManyToOne(fetch= FetchType.LAZY)
@JoinColumn(name="country_id")
private Country country;
}
@Entity
@Table(name="\"Country\"")
public class Country implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="country_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer countryId;
@Column(name="country_name")
private String countryName;
@Column(name="sort_name")
private String sortName;
@Column(name="phone_code")
private Integer phoneCode;
}
Repository
public interface CityRepository extends CrudRepository<City, Integer>{
/**
* @param countryId
* @param cityName
* @return
*/
@Query("From City city where city.state.country.countryId =:countryId and city.cityName like:cityName and city.active = true")
List<City> searchCityBynameAndCountryId(@Param("countryId") int countryId,@Param("cityName") String cityName);
}
其实我曾经用上面提到的查询来获取数据的位置 hibernate 和 Mysql 组合中的子句,但这里我使用的是 Spring 数据和 Postgresql,当我执行这个选择查询时,我得到了 以下错误。请有人帮我解决这个问题。
错误
原因:org.postgresql.util.PSQLException: ERROR: column city0_.stateid 不存在 提示:也许您的意思是参考 “city0_.state_id”列。位置:204
【问题讨论】:
-
你检查过stateId getter的名字是getStateId而不是getStateid吗?
-
不,实际上我在调用存储库方法时遇到了这个错误。
-
检查实体类,如果stateId的getter方法被称为getStateId而不是getStateid
标签: postgresql spring-boot spring-data-jpa many-to-one