【问题标题】:I don't understand why repository does query in one case but doesn't do in another我不明白为什么存储库在一种情况下会查询,但在另一种情况下不会
【发布时间】:2017-04-21 16:47:19
【问题描述】:

我有一些基于 spring-boot 和来自 DB 的 data-jpa 的简单 STOMP WebSocket。

如果是来自 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);
  }

}

有什么想法吗?非常感谢!

【问题讨论】:

  • 在查询不起作用的情况下,您是否检查了电子邮件是否通过?

标签: java android spring-boot spring-data-jpa spring-websocket


【解决方案1】:

代码不完整,没有 spring boot stomp 配置,也没有指定如何持久化对象响应。

我正在开发一个基于 WebSocket 客户端的 Android stomp。我建议你检查一下客户端接收的是什么以及它的有效负载字符串是如何转换为对象的。

我的项目仍在进行中,但我希望它可能有用。

这个问题很老了,但我希望我的回答可以帮助使用 WebSocket 的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多