java.lang.La chaîne ne peut pas être jeté à l' [Ljava.lang.Chaîne de caractères;
J'ai le texte suivant et je reçois le message d'erreur
java.lang.La chaîne ne peut pas être jeté à l' [Ljava.lang.Chaîne;
J'ai changé le Object[]
à String[]
parce que j'ai été confronté à l'erreur suivante:
java.lang.L'objet ne peut pas être jeté à l' [Ljava.lang.Chaîne;
Une idée?
private Collection queryStatement(String SelectStatement) {
int colcount = 0;
int rowcount = 0;
int rowcounter = 0;
ArrayList a = new ArrayList();
Query query = getEntityManager().createNativeQuery(SelectStatement);
List<String[]> resultList = (List<String[]>) query.getResultList();
if (!resultList.equals(Collections.emptyList())) {
rowcount = resultList.size();
}
if (rowcount > 0) {
colcount = ((String[]) query.getResultList().get(0)).length;
}
rows = rowcount;
cols = colcount;
String[][] array = new String[rowcount][colcount];
for (String[] obj : resultList) {
String[] record = new String[colcount];
for (int colCounter = 0; colCounter < colcount; colCounter++) {
record[colCounter] = safeValue(obj[colCounter]+"");
}
array[ rowcounter++] = (String[]) record;
}
a.add(array);
return a;
}
Qu'est-ce que votre selectstatement? pouvez-vous écrire une requête?
Naman SÉLECTIONNEZ mot de passe DE COMPTES where USERNAME = '1114", Mais comme vous userstand de la requête de paramètre
Pourquoi serait-ce le retour d'un
oui, il viendra List<String> parce que, dans la requête, vous avez une seule colonne PASSWD
Parce que la requête de paramètre (SelectStatement) est possible de retourner la Liste(String[])
Naman SÉLECTIONNEZ mot de passe DE COMPTES where USERNAME = '1114", Mais comme vous userstand de la requête de paramètre
Pourquoi serait-ce le retour d'un
List<String[]>
? On dirait que c'est le retour d'un List<String>
, d'où l'erreur.oui, il viendra List<String> parce que, dans la requête, vous avez une seule colonne PASSWD
Parce que la requête de paramètre (SelectStatement) est possible de retourner la Liste(String[])
OriginalL'auteur Giorgos | 2016-09-22
Vous devez vous connecter pour publier un commentaire.
Cette erreur se produit lorsque vous essayez de lancer un
String
à un tableau deString
.Par exemple:
Pour moi, vous obtenez cette erreur, car
query.getResultList()
renvoie uneList<String>
ouList<Object>
au lieu deList<String[]>
tels que lorsque vous essayez de lancer une valeur en tant queString[]
vous obtenez cette exception.Selon la Javadoc createNativeQuery(String) renvoie un résultat de type
Object[]
ou un résultat de typeObject
si il y a une seule colonne dans la liste de sélection.Approche #1
Un simple moyen pour résoudre ce problème, pourrait être de s'appuyer sur la raw type pour le résultat (c'est pas le plus élégant, mais le plus simple), puis plus tard, vous pouvez vérifier le type du contenu de la liste pour le lancer correctement.
Puis de vérifier le type, vous pouvez procéder comme suivant:
Approche #2
Une façon plus élégante serait de créer une
POJO
et l'utilisationcreateNativeQuery(String chaîne -, Classe resultClass)
pour créer votre requête, de cette façon, il sera automatiquement mapper les colonnes avec les champs de votrePOJO
Ici est de savoir comment il pourrait ressembler à
oui, je veux dire List<String[]> désolé.
la deuxième déclaration vous faire
This error occurs ...
n'est pas strictement exact. Je pense que vous voulez dire quelque chose comme: "Cette erreur se produit lorsque vous essayez de lancer unString
objet d'un tableau d'objets StringString[]
". Si vous utilisez le motList
que vous avez, alors vous implicitement signifiejava.util.List
OriginalL'auteur Nicolas Filotto
La ligne
est un raw type et donc (potentailly) tous les objets dans le code peut être demandé que
Object
.Essayer
OriginalL'auteur OldCurmudgeon
À un certain moment dans votre code, vous êtes en train de jeter un String String[]. Votre trace de la pile de vous dire où exactement.
En dehors de ce que votre code a beaucoup d'autres questions.
OriginalL'auteur DaImmi
Faire comme ceci:
vous avez raison @nicolas mais ici il a mentionné sa requête. J'ai déjà demandé de lui que ce qui est de la requête et il ne contient qu'une seule colonne de sélection.
OriginalL'auteur Nimesh