gpt4 book ai didi

java - 为什么简单的选择查询返回 List 但在 jpa 中加入查询返回 List
转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:21 26 4
gpt4 key购买 nike

我正在使用带有 jpa 的 Play Framework 。我有一个带有 2 个函数的模型 Jobads 到 findall() findByLocation()

我的模型

  public class Jobads {

@Id
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;


private String title;

@ManyToOne
private Jobindistry industry;


@ManyToMany
@JoinTable(
name = "jobads_city",
joinColumns = {@JoinColumn(name = "jobads_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "city_id", referencedColumnName = "id")})
private List<City> city;
}

findall()

 public static List<Jobads> findall() {
@SuppressWarnings("unchecked")
List<Jobads> el = JPA.em().createQuery("from Jobads order by id").getResultList();
return el;
}

findByLocation()

public static List<Jobads> findByLocation(String location) {
List<Jobads> jadList = JPA.em().createQuery("FROM Jobads j join j.city c WHERE c.name LIKE :location ").setParameter("location", "%" + location + "%").getResultList();

return jadList;

}

我在我的控制台中打印两个函数输出 findall() 工作正常但 findByLocation() 给我一个异常 [ClassCastException: [Ljava.lang.Object;不能转换到模型。Jobads]

为什么这个问题只发生在 findByLocation() 中,这个问题的解决方案是什么??

谢谢

最佳答案

它正在发生,因为这就是没有 select 子句的 HQL 查询的工作方式。请注意,这些不是有效的 JPQL 查询。 JPQL 使 select 子句成为强制性的,使用 select 子句将允许您指定希望查询返回的内容:

select j from Jobads j join j.city c WHERE c.name LIKE :location

关于java - 为什么简单的选择查询返回 List<Mymodel> 但在 jpa 中加入查询返回 List<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27752936/

26 4 0