实际错误
java.lang.ClassCastException: java.lang.String cannot be cast to model.Persone
-
大家好,我是JPQL的新手,我正试图写一个非常简单的JPQL查询而没有运气。
我有一个名为persone的数据库表,其中包含一个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(和其他所有内容)设置为String而不是List,但是我无法设法获得正确的方法而不是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");
这个错误可能是什么原因?
答案 0 :(得分:2)
您正在选择一个字符串名称(p.nome
),因此您将获得一个字符串。
如果您想要退回整个人,请选择整个人(SELECT p FROM Personne p
)。
答案 1 :(得分:1)
Query selectAll = em.createQuery("SELECT p.nome FROM Persone p");
代码显示您只从查询中选择字符串而不是所有人物对象 以下查询将返回人物对象
Query selectAll = em.createQuery("SELECT p FROM Persone p");
List<Persone> list = selectAll.getResultList();
如果您只想从person中选择名称。名称是字符串类型,它将返回List<String>
Query selectAll = em.createQuery("SELECT p.nome FROM Persone p");
List<String> result = selectAll.getResultList();
答案 2 :(得分:0)
我设法解决它并让它适合我。
我刚刚创建了一个返回<Schema Namespace="MyAppModel.Store" Provider="Npgsql" ProviderManifestToken="9.6.2" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
的新方法,它很顺利。
List<String>
谢谢你们的帮助:)