小编B37*_*378的帖子

使用Spring DATA JPA创建自定义查询?

我正在使用Spring Data JPA开展项目.我在数据库中有一个表作为my_query.

我想创建一个方法,该方法将字符串作为参数,然后在数据库中将其作为查询执行.

方法:

executeMyQuery(queryString)
Run Code Online (Sandbox Code Playgroud)

例如,当我通过

queryString= "SELECT * FROM my_query"
Run Code Online (Sandbox Code Playgroud)

那么它应该在DB级别运行该查询.

存储库类如下.

public interface MyQueryRepository extends JpaRepository<MyQuery, Long>{
    public MyQuery findById(long id);

    @Modifying(clearAutomatically = true)
    @Transactional
    @Query(value = "?1", nativeQuery = true)
    public void executeMyQuery(String query);

}
Run Code Online (Sandbox Code Playgroud)

但是,它没有像我预期的那样工作.它给出以下错误.

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''select * from my_query;'' at line 1
Run Code Online (Sandbox Code Playgroud)

还有其他办法,我可以实现这个目标.提前致谢

mysql sql spring spring-data spring-data-jpa

16
推荐指数
1
解决办法
6万
查看次数

如何将 FCM 与 Ejabberd 集成?

环境:

Ejabberd 版本:16.04

Smack-android-4.1.0

我创建了一个带有 XMPP 服务器的 Android 聊天应用程序。然而,由于谷歌播放权限问题,我不得不缩小应用程序的功能,当应用程序在后台时支持接收传入的消息通知。

作为替代方案,我从 GooglePlay 审核小组收到了以下建议。

移除此权限后,如果您的应用的消息传递需要暂时免除电池优化,您可以考虑使用 Firebase Cloud Messaging (FCM)。仅当消息时间紧迫且需要用户立即交互时才设置高优先级,并注意将消息设置为高优先级与普通优先级消息相比会导致更多电池消耗

所以目前用户可以通过应用程序发送消息。但是当他关闭应用程序时,他将被视为离线用户,并且不会收到任何来自应用程序的通知。当他再次打开应用程序时,他将获得所有保存在 Ejabberd 服务器上的离线消息。

我想增强当前的应用程序,以便即使用户关闭了应用程序,当有人向他发送消息时,他仍然会收到通知(类似于 whatsapp)

  1. ejabberd 中是否有将服务器与 FCM 集成并处理此问题的模块?

  2. 如果我们不能通过 Ejabberd 实现这一点,是否有第三方库来支持这一点?

  3. 如果不是,我们是否必须从头开始编写一个 Erlang 模块?

我在互联网上发现了类似的问题,但找不到任何可行的解决方案。由于我对 Erlang 没有太多经验,很高兴听到您对此的解决方案/想法。提前致谢。

erlang android ejabberd smack firebase-cloud-messaging

5
推荐指数
1
解决办法
1061
查看次数

是否可以使用带有 Spring Data JPA 的 EntityManager 创建视图?

我正在使用 Spring Data JPA 开发一个项目。我想向存储库添加一些自定义行为。

目前我正在尝试通过执行该方法来创建视图

存储库类如下。

public interface MyQueryRepository extends JpaRepository<MyQuery, Long>, MyQueryRepositoryCustom {
    public MyQuery findById(long id);
    public list executeMyQuery();

}
Run Code Online (Sandbox Code Playgroud)

这是定制:

public class MyQueryRepositoryImpl implements MyQueryRepositoryCustom {
    @PersistenceContext
    private EntityManager entityManager;

    public List executeMyQuery() {
        return entityManager.createQuery("CREATE VIEW result_set AS select record FROM my_data").getResultList();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误。

[ERROR] [http-bio-8080-exec-10] ErrorCounter - line 1:1: unexpected token: CREATE
antlr.NoViableAltException: unexpected token: CREATE
    at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:198) [hibernate-core-5.1.1.Final.jar:5.1.1.Final]
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于 SELECT 查询。

有没有其他方法可以使用实体管理器创建视图。提前致谢

java mysql spring spring-data spring-data-jpa

2
推荐指数
1
解决办法
3846
查看次数

How to initialize Spring Data JPA Page to null?

This is a code snippet of my project. Here I'm trying to get paginated data using Spring Data JPA. The pagination part works fine. However when searchParameter is NULL then I just want to return empty create a blank page in my UI

public Page<AccessLog> getDataInRange(long fromTime, long toTime, String searchParameter, Integer start,
                                          Integer length) {
        Page<AccessLog> accessPage;
        if (searchParameter != null) {
            accessPage = accessRepository.findBySystemTimestampBetween(fromTime, toTime,
                    new PageRequest(start, length));
        } else
            accessPage = null;
        return accessPage;
    }
Run Code Online (Sandbox Code Playgroud)

However, this …

spring http spring-mvc spring-security spring-data-jpa

2
推荐指数
2
解决办法
3352
查看次数