привет, я работаю в проекте Spring mvc с использованием данных весны jpa, у меня есть nativeQuey в интерфейсе, который простирается от JpaRepository, в этот запрос я выбрать несколько значений из Diferent таблиц и я вернутькак сделать объект [Ljava.lang.Object, возвращаемый Spring Data JPA Query
ArrayList<Object>
я напечатал значение этого ArrayList и удовлетвориться этим:
[[Ljava.lang.Object;@1f634fe, [Ljava.lang.Object;@1361a15, [Ljava.lang.Object;@1c8c51c]
после возвращения запроса 3 строки с 7 значений в каждой строке я подозреваю, что этот объект 3 (списки), и у каждого списка есть 7 полей, я очень уверен at - это строки и ints, у меня есть этот два импорта в моем классе, где я могу использовать значения.
import java.util.ArrayList;
import java.lang.Object;
Мой вопрос в том, как я могу отнести этот список, имея 3 списка внутри, чтобы получить мои значения?
это мой класс, который расширяет JpaRepository
import java.util.ArrayList;
import java.lang.Object;
public interface I_GL_JE_Lines extends JpaRepository<C_GL_JE_LINES, Long>{
@Query(value ="select value1, value2, value3, value4, value5"
+ "from DB_Table, DB_Table2, DB_Table3"
+ "where id_value = 1 ",
nativeQuery = true)
public ArrayList<Object> queryWithValues();
метод в моем классе услуги MyServiceClass.java:
import java.util.ArrayList;
import java.lang.Object;
public ArrayList<Object> getQueryValues() {
ArrayList<Object> results = null;
results = serviceAutoWiredVariable.queryWithValues();
return results;
}
и мой класс контроллера, где я пытаюсь получить мои ценности
@Autowired MyServiceClass_autoWiredServiceClassVariable;
@RequestMapping(value = "/getVaules", method = RequestMethod.GET)
public String getValues(Model model)
{
ArrayList<Object> objectlist = null;
objectlist = _autoWiredServiceClassVariable.getQueryValues(); <--i call my method here and it return the lists that have 3 lists inside with 7 or more values each
.... HERE i want an idea how to get those values or how to cast them
//i tried this but i gives me this exception
//java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.ArrayList
Iterator itr = objectlist .iterator();
Iterator innerIterator;
while(itr.hasNext())
{
ArrayList<Object> obj = (ArrayList<Object>) itr.next();
innerIterator= obj.iterator();
while(iteradorInterno.hasNext())
{
Object[] innerObj = (Object[]) innerIterator.next();
value = String.valueOf(innerObj[0]);
}
}
Эта строка:
ArrayList<Object> obj = (ArrayList<Object>) itr.next();
дает мне эту exceptio:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.ArrayList
Никогда не использовал spring-data jpa, но не должен ли он быть автоматическим, если имена столбцов совпадают с именами свойств bean? Просто сделайте этот метод возвратом 'List' вместо 'List
Я попытался вернуть это, но данные Spring jpa не работают, если вы не выбираете все атрибуты в этой таблице, а в этой таблице есть 80 атрибутов, которые мне не нужны для выбора, также у меня есть функции, такие как SUM() DECODE() в моем исходном запросе – stackUser2000