【发布时间】:2018-11-16 15:32:22
【问题描述】:
我的 MessageFieldRepository 是
package xyz.repository;
import java.util.List;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.repository.CrudRepository;
import xyz.models.MessageField;
public interface MessageFieldRepository extends CrudRepository<MessageField,String> {
@Query(value="{'messageSchema' : ?0}" )
List<Object[]> findByMessageSchemaId(String messageSchema );
}
而MssageFieldSchemaService类方法是
public JSONObject findByMessageSchema(String messageSchema) throws ParseException{
JSONObject jsonobject = new JSONObject();
List<Object[]> data = messageFieldRepository.findByMessageSchemaId(messageSchema);
JSONArray messageFieldJsonArray = new JSONArray();
JSONObject messageFieldJsonObject = new JSONObject();
try {
for (Object[] alldatastore : data) {
messageFieldJsonObject.put("dataVal", alldatastore[0]);
messageFieldJsonObject.put("messageSchema", alldatastore[1]);
messageFieldJsonObject.put("dataVal", alldatastore[2]);
messageFieldJsonObject.put("messageSchema", alldatastore[3]);
messageFieldJsonObject.put("dataVal", alldatastore[4]);
messageFieldJsonArray.add(messageFieldJsonObject);
}
jsonobject.put("fields", messageFieldJsonArray);
} catch (Exception e) {
System.out.println(e);
}
return jsonobject;
}
这是我遇到错误的那一行
for (Object[] alldatastore : data) {
异常 =>
java.lang.ClassCastException: cubereum.models.MessageField cannot be cast to [Ljava.lang.Object;
谁能告诉我为什么会出现这个错误
【问题讨论】:
-
可能你需要使用合适的 pojo 类而不是 Object。粘贴来自 mongo 的原始(字符串)查询结果。
-
您是否调试过代码以查看收到错误时
data包含的内容? -
已经试过了,但是不行
-
它包含两个对象,其中存在多个值
-
我认为存储库应该返回您的
cubereum.models.MessageField实例,考虑将List<Object[]>更改为List<MessageField>
标签: java mongodb spring-boot