我有一些基于spring-boot的简单STOMP WebSocket和来自DB的data-jpa。
我的控制器中的查询工作正常,如果它是来自JS(SockJS)的查询并且如果从Android(com.github.NaikSoftware:StompProtocolAndroid)进行查询而无法工作(只返回空列表)但是来自超类的方法在这两种情况下,CrudRepository(如findAll())都可以工作。
控制器
@Controller
public class MainController {
@Autowired
private MemberDAO memberDAO;
@MessageMapping("/getMembers")
@SendToUser("/topic/greetings")
public SocketResponse getMembers(String email){
System.out.println("email "+memberDAO.findByEmail(email));//Works if it is query from JS (SockJS) and doesn't work (just return rmpty list) if doing query from Android (com.github.NaikSoftware:StompProtocolAndroid)
System.out.println("listMembert "+memberDAO.findAll());//Both cases work fine and return list of members
//.....
}
}
DAO
public interface MemberDAO extends CrudRepository<Member, Long> {
@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
//@Query(" from Member m where m.email = ?1")
List<Member> findByEmail(String email);
}
应用
@SpringBootApplication
@Import({ WebSocketConfig.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
有什么想法吗?非常感谢!
答案 0 :(得分:0)
代码不完整,没有spring boot stomp配置,您没有指定持久化对象响应的方式。
我正在通过WebSocket客户端进行Android编程。我建议您检查接收的客户端以及如何将有效负载字符串转换为对象。
我的项目仍在进行中,但我希望它可能会有用。
这个问题很旧,但是我希望我的回答可以帮助谁使用WebSocket。