JPQL 查询 - java.lang.String 无法转换为 model.xxx

JPQL Query - java.lang.String cannot be cast to model.xxx

实际完全错误

java.lang.ClassCastException: java.lang.String cannot be cast to model.Persone

--

大家好,我是 JPQL 的新手,我正在尝试编写一个非常简单的 JPQL 查询,但不幸的是。

我有一个名为 persone 的数据库 table,其中包含一个 String nome 列。

我要翻译的查询是SELECT Nome FROM persone

--

这是实体

@Entity
public class Persone implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id_persona")
    private int idPersona;

    private String cognome;

    private Timestamp data_nascita;

    @Column(name="nome")
    private String nome;
}

--

这是查询执行方法的一个片段。我试图修改它,将 return(以及其他所有内容)设置为字符串而不是列表,但是我无法设法获得正确的方法而不是 getResultList()。

public static List<Persone> selectAllPersone(){
    Query selectAll = em.createQuery("SELECT p FROM Persone p");
    @SuppressWarnings("unchecked")
    List<Persone> list = selectAll.getResultList();
    return list;
}

--

这是我编码失败的原因

Query selectAll = em.createQuery("SELECT p.nome FROM Persone p");

此错误可能是由于什么原因造成的?

您正在 selecting 名称 (p.nome),它是一个字符串,因此您将得到一个字符串。

如果要返回整个人,select整个人(SELECT p FROM Personne p)。

我设法解决了它并让它为我所用。 我刚刚创建了一个 returns a List<String> 的新方法,它运行良好。

public static List<String> selectNome(){
    Query selectAll = em.createQuery("SELECT p.nome FROM Persone p");
    @SuppressWarnings("unchecked")
    List<String> qnome = selectAll.getResultList();
    return qnome;
}

谢谢大家的帮助:)

    Query selectAll = em.createQuery("SELECT p.nome FROM Persone p");

如您的代码所示,您 select 仅查询来自查询的字符串而不是所有人员对象 以下查询将 return 人对象

Query selectAll = em.createQuery("SELECT p FROM Persone p");
  List<Persone> list = selectAll.getResultList();

如果你想 select 只有名字来自 person.A 名字是字符串类型,它会 return List<String>

Query selectAll = em.createQuery("SELECT p.nome FROM Persone p");
List<String> result = selectAll.getResultList();