Создать класс держателей для обоих типов
class MessagingAndUsers
{
private final Messaging m;
private final Users u;
MessagingAndUsers( Messaging m, Users u )
{
this.m = m;
this.u = u;
}
// Getters
}
Теперь вернемся к вашему методу. Прежде всего, похоже, что он должен вернуть список, а не одно значение
public List<MessagingAndUsers> getMessagesByMid(int msgid) {
String query = "SELECT msgid, msgsubject, msgcontent, timestamp, fname, lname FROM messaging INNER JOIN users ON messaging.users_userid=users.userid WHERE msgid=?;";
PreparedStatement ps = conn.prepareStatement(query);
try {
ps.clearParameters();
ps.setInt(1, msgid);
ResultSet rs = ps.executeQuery();
ArrayList<MessagingAndUsers> retVal = new ArrayList<MessagingAndUsers>();
while (rs.next()) {
Messaging m= new Messaging();
Users u= new Users();
m.setMsgid((rs.getInt(1)));
m.setMsgsubject(rs.getString(2));
m.setMsgcontent(rs.getString(3));
m.setTimestamp(rs.getString(4));
m.setMsgrecipient(rs.getInt(5));
m.setUsers_userid(rs.getInt(6));
u.setFname(rs.getString(7));
u.setLname(rs.getString(8));
retVal.add( new MessagingAndUsers( m, u ) );
}
return retVal;
} catch (Exception e) {
System.out.println(e);
return null;
}
finally
{
ps.close( );
}
}