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();
实际完全错误
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();