Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从两个表中提取数据并将其传递给列表-hibernate和spring_Java_Spring_Hibernate_Hql - Fatal编程技术网

Java 从两个表中提取数据并将其传递给列表-hibernate和spring

Java 从两个表中提取数据并将其传递给列表-hibernate和spring,java,spring,hibernate,hql,Java,Spring,Hibernate,Hql,我想使用hibernate和concat从两个表中获取数据,并将结果放入一个列表中。我已经在这上面呆了好几天了,但似乎没有头绪。下面是返回列表的两个表的一个片段 List<Records> rec = recService.getAllRecords(); List<Data> rec2 = dataService.getAllDataRecords(); List rec=recService.getAllRecords(); List rec2=da

我想使用hibernate和concat从两个表中获取数据,并将结果放入一个列表中。我已经在这上面呆了好几天了,但似乎没有头绪。下面是返回列表的两个表的一个片段

List<Records> rec = recService.getAllRecords();
        List<Data> rec2 = dataService.getAllDataRecords();
List rec=recService.getAllRecords();
List rec2=dataService.getAllDataRecords();
目前我面临的挑战是将两个搜索结果传递到一个列表中。非常感谢您的任何帮助和想法。好心协助

已编辑

List<Object> combined = new ArrayList<>();
        combined.addAll(rec);
        combined.addAll(rec2);


        for (Object string : combined) {

            //I am getting error below in calling methods from the combined arraylist   
            returnMatchName.add(string.getFirstname() + " " + string.getLastname() );
List combined=new ArrayList();
合并。添加全部(rec);
合并。添加全部(rec2);
for(对象字符串:组合){
//我在下面从组合arraylist调用方法时遇到错误
returnMatchName.add(string.getFirstname()+“”+string.getLastname());

第一种方法: 如果两个表彼此相关(即外键),则可以在LINQ查询中使用join

第二种方法:
创建新列表,并通过将其强制转换到公共类并添加到新创建的列表中来逐个创建列表。

您可以通过几种方法来完成此操作。如果
记录
数据
共享一个公共接口,例如
记录
,则此操作将有效

java 8:

List<Record> combined = Stream.concat(rec.stream(), rec2.stream()).collect(Collectors.toList());
List combined=Stream.concat(rec.Stream(),rec2.Stream()).collect(collector.toList());
java 7及以下版本:

List<Record> combined = new ArrayList<>();
combined.addAll(rec);
combined.addAll(rec2);
List combined=new ArrayList();
合并。添加全部(rec);
合并。添加全部(rec2);

如果它们没有实现一个公共接口,那么您的
列表必须是一个对象列表

您调用同一个方法
getAllRecords
两次?检查编辑…tnxMaybe我可能理解错了问题,但是…我会这样做:
List total=new ArrayList()
然后
total.addAll(rec)
total.addAll(rec2);
如何从total数组列表中获取方法…例如total。getName@Kingston您正在通过在内部添加另一个问题来更改问题。请将另一个问题移到其他位置(您可以将其中一个工作答案标记为正确)没有相关的,所以第二种方法可能是可能的,但您必须抛出更多的光创建一个类,即NewClass,创建扩展方法/映射器,将两个类的属性映射到公共类(NewClass),然后强制转换第一个列表并添加到新列表(即list)第二个也是一样。先生,代码不会显示在注释中。请通过修改答案来显示代码片段它们不共享公共接口…这可以工作吗?>>>>>>>>>>>>>>>>List combined=new ArrayList();请参阅我的回答,“如果它们没有实现公共接口,那么您的列表必须是一个对象列表”从组合arraylist调用方法时出错,例如..combined.getName