Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 Jdbc模板集列表对象属性与行映射器_Java_Spring_Postgresql_Jdbctemplate - Fatal编程技术网

Java Jdbc模板集列表对象属性与行映射器

Java Jdbc模板集列表对象属性与行映射器,java,spring,postgresql,jdbctemplate,Java,Spring,Postgresql,Jdbctemplate,我在读这篇文章: 这个答案似乎很好: 然而,我想到了另一种情况,直到现在我才找到合适的答案: 如果我的message类中有一个用户列表,该怎么办 class User { Long id; String name; } class Message { Long id; String name; List<User> users; } 类用户{ 长id; 字符串名; } 类消息{ 长id; 字符串名; 列出用户名单; } 甚至可以使用sql请求手动

我在读这篇文章:

这个答案似乎很好: 然而,我想到了另一种情况,直到现在我才找到合适的答案: 如果我的message类中有一个用户列表,该怎么办

class User {
   Long id;
   String name;
}

class Message {
   Long id;
   String name;
   List<User> users;
}
类用户{
长id;
字符串名;
}
类消息{
长id;
字符串名;
列出用户名单;
}
甚至可以使用sql请求手动(无jpa或crud存储库)和行映射器为一条消息映射每个用户,并生成类似的内容吗

public class MessageMapper implements RowMapper<Message> {

public Message mapRow(ResultSet rs, int i) throws SQLException{
   Message message= new Message();
   message.setId(rs.getLong("messageId");
   message.setName(rs.getString("messageName"));
   User user = new User();
   // or List<User> users = new ArrayList<>(); ??? ...
     user.setUsers(users);
   return message ;
  }}
public类MessageMapper实现行映射器{
公共消息mapRow(ResultSet rs,int i)引发SQLException{
消息消息=新消息();
message.setId(rs.getLong(“messageId”);
message.setName(rs.getString(“messageName”);
用户=新用户();
//或列表用户=新建ArrayList()。。。
user.setUsers(用户);
返回消息;
}}

谢谢!

您是否查看了
org.springframework.jdbc.core.ResultSetExtractor
界面及其
org.springframework.jdbc.core.RowMapperResultSetExtractor
实现?是的,但我不明白您的目的是什么?问题是什么?首先编写返回消息及其用户的查询.Exe喜欢它,看看每一行包含什么。然后思考你的问题,问问你自己:每一行是否代表所有用户的一条消息?@JBNizet很抱歉。嗯,我理解这似乎是不可能的。我的第一个想法是像sql查询一样(没有尝试过,我只是在想):
选择m.id作为messageId,选择m.name作为messageName,选择array\u agg(不同的(m.name | |’:“| | u.name”)作为message和message中的用户m left join user_message um on um.message|id=m.id left join user u on u.id=um.user|id其中m.id=1 group by m.id
,但我想这样连接并与RowMapper一起使用是不可能的。谢谢!