java - 具有相同列名的命名查询内部连接表的重复数据/值
问题描述
我正在尝试使用下面的命名查询加入三个表:Student、BorrowedBook、Books
List< Student > stuList= new ArrayList< Student >( );
StringBuilder sb = new StringBuilder( );
sb.append( "select s.studentId, s.name, s.lastName, b.name " );
sb.append( "from student s " );
sb.append( "inner join borrowedbook c on
s.studentId = c.studentId " );
sb.append( "inner join books b on c.bookId = b.bookId " );
Query query = getSession( ).createSQLQuery( sb.toString( ) );
query.setProperties( Student.class );
List< Object[] > searchResults = query.list( );
但是,当我在调试模式下的 searchResults 中检查 b.name 的值时,它会得到 s.name 的值。意思是,b.name 与 s.name 具有相同的名称,即使它应该有自己的名称。我不知道这里有什么问题,我什至给它们起了别名来区分它们。
解决方案
name
您应该将这两列别名为不同的东西:
StringBuilder sb = new StringBuilder( );
sb.append( "select s.studentId, s.name as student_name, s.lastName, " );
sb.append( " b.name as book_name " );
sb.append( "from student s " );
sb.append( "inner join borrowedbook c on s.studentId = c.studentId " );
sb.append( "inner join books b on c.bookId = b.bookId " );
然后使用列名student_name
和访问您的结果集book_name
。
推荐阅读
- python - 在python中使用数据框元素循环遍历列表
- google-cloud-firestore - 从 firebase 获取数据到 SwiftUI
- c++ - 使用 memcpy 和 memset 重新分配数组
- excel - 从每 8 页复制数据而不“手动”引用它们
- symfony - 为什么 Symfony Mailer 4.4 不需要 spool?
- .net - 如何在自动化数据加载过程的同时在 Visual Studio 中设置默认代码页
- c# - 处理请求时发生未处理的异常 - ASP .NET Core
- javascript - 包装时电子去除顶杆
- php - HTML 搜索到 PostgreSQL 数据库语法“$”错误
- angular - angular 6出错后如何刷新http服务