小编Kal*_*han的帖子

@JsonIgnore和@JsonBackReference,@ JsonManagedReference之间的区别

我知道这两个@JsonIgnore@JsonManagedReference,@JsonBackReference用于解决Infinite recursion (StackOverflowError),就是这两者之间的区别?

注意: 这些是杰克逊注释.

java json jackson

41
推荐指数
2
解决办法
3万
查看次数

如何使用angular.js推送通知?

我一直在构建一个简单的应用程序来学习angular.js.到目前为止,我连接了MEAN堆栈中的所有部分,我能够从Mongo中保存和检索数据.

该应用程序本质上是一个待办事项列表.用户可以创建一个项目,在项目内部创建带有"todos"的"卡片",然后可以从一个状态移动到另一个状态("积压","正在进行","完成"等)

我希望能够将通知推送给所有连接的人,告诉他们的应用程序需要刷新才能获得最新的待办事项.换句话说,假设用户A向项目A添加了一张新卡,我想向正在观看项目A的所有用户发送消息,以便他们的应用程序发出项目刷新以获得最新和最好的.

有关如何进行的任何建议?我需要将哪种技术添加到MEAN堆栈才能执行此类操作?

提前致谢

javascript mongodb push-notification angularjs mean-stack

19
推荐指数
1
解决办法
4万
查看次数

如何使用spring动态跟踪数据库更改?

我使用springspring-dataspring-cronjobsjava-mail。我需要立即扫描my-sql数据库中表中的更改,并向管理员发送有关更改的邮件。

为了实现这一点,我所做的只是运行一个 cronjob 来扫描表中的所有更改,但这是一个繁重的过程,因为该表与货币交易相关,并且会消耗大量资源,因此应用程序变得太慢。

那么,有没有更好的过程可以跟踪数据库中的当前更改。例如,如果有任何方法可以在 spring 中设置观察者以触发数据库更改过程,那将会很有帮助。

以下是我正在扫描的表的实体示例。

/** Import statements **/

@Entity
public class UserWalletTransaction {

    @Id
    @GeneratedValue
    private Long Id;
    private String toAccount;
    @ManyToOne(fetch = FetchType.LAZY)
    User user;
    @ManyToOne(fetch = FetchType.LAZY)
    Wallet wallet;
    private String senderOrMobile;
    private String benificiaryName;
    private String beniMobile;
    private Double transferAmount;
    private Double sTax;
    private Double charge;
    private Double netAmount;
    private String apiTId;
    private String apiComment;
    private String agentId;
    private Double apiSTax;
    private Double …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc spring-data

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

处理spring数据中的并发事务

我在用spring Data.我有弹簧数据并发事务的问题如下:

实体和存储库如下:

    @Entity
    public class Wallet {

        @Version
        private int version;
        @Id
        @GeneratedValue
        @OrderColumn
        private Long Id;
        @OneToOne()
        @OrderColumn
        private User user;
        @OrderColumn
        private Double virtualBalance;
        @Column(name = "created_by")
        @OrderColumn
        private String createdBy;
        @Column(name = "created_date")
        @OrderColumn
        private Date createdDate;
        @Column(name = "updated_by")
        @OrderColumn
        private String updatedBy;
        @Column(name = "updated_date")
        @OrderColumn
        private Date updatedDate;
... Setters and getters ...
}
Run Code Online (Sandbox Code Playgroud)

repository是如下

public interface WalletJpaRepository extends JpaRepository<Wallet, Long>{

    @Lock(LockModeType.OPTIMISTIC) // I have also tried PESSIMISTIC, READ, …
Run Code Online (Sandbox Code Playgroud)

java spring transactions spring-data spring-data-jpa

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

TOP [N]记录组按用户查询以最佳方式查询

我今天遇到了一个有趣的问题:

让我们假设以下条件

1.有n个用户

2.系统在移动时收集每个驾驶员的GPS坐标

3.我们必须按降序排序按LAST_UPDATE_DATE排序的每个用户的最后10个GPS坐标记录

4.表中有超过1982008条记录

我通过查询最后{(10 + [阈值])*n}记录解决了这个问题,并使用HashMap将它们排列在java中,其中用户是Key,各个坐标的列表是值

这似乎不是最好的解决方案,因为它可能会选择随机记录,并且可能无法覆盖每个用户10条记录,

在for循环中按用户查询它也不是最佳解决方案,因为它需要多个数据库调用

任何人都可以使用Spring数据JPA建议什么是最好的解决方案,我也打开使用Normal JDBC,以防Spring数据JPA无法解决这个问题

我正在使用Spring数据JPA,Mysql,Java 8

这是create table命令

@RaymondNijland好的,这是create table命令

CREATE TABLE `gps_coordinate` (
    `ID` BIGINT(50) NOT NULL AUTO_INCREMENT,
    `user_id` VARCHAR(255) NULL DEFAULT '0',
    `driver_id` INT(20) NULL DEFAULT '0',
    `latitude` VARCHAR(50) NULL DEFAULT '0.00000000',
    `longitude` VARCHAR(50) NULL DEFAULT '0.00000000',
    `distance_in_miles` VARCHAR(50) NULL DEFAULT '0.00',
    `distance_in_kms` VARCHAR(50) NULL DEFAULT '0.00',
    `device_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `created_by` VARCHAR(50) NULL DEFAULT 'Anonymous',
    `created_date` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_by` VARCHAR(50) …
Run Code Online (Sandbox Code Playgroud)

java mysql spring jpa spring-data-jpa

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

条件对列表的 In 子句

有一个表,我需要通过在配对值列表中应用和条件来获取分页记录,下面是解释

假设我有一个类Billoflading,其中有各种字段表中的两个重要字段是

  1. tenant
  2. billtype

我有一个包含值的对列表

[
   {`tenant1`, `billtype1`},
   {`tenant2`, `billtype2`},
   {`tenant3`, `billtype3`},
   ....
  ]
Run Code Online (Sandbox Code Playgroud)

我需要一个 JPA 查询,其中的获取将类似于 findByTenantAndBilltypeOrTenantAndBillTypeOr......

在简单的 sql 查询中,它会像

Select * from `Billoflading` where 
`tenant` = 'tenant1' and billtype = 'billtype1'
OR `tenant` = 'tenant2' and billtype = 'billtype2'
OR `tenant` = 'tenant3' and billtype = 'billtype3'
OR ......... so on..
Run Code Online (Sandbox Code Playgroud)

我尝试编写 JPA 查询如下

Page<Billoflading> findByTenantInAndBillTypeIn(List<String> tenants, List<String> billTypes, Page page);
Run Code Online (Sandbox Code Playgroud)

但这也有交叉记录,即它提供了tenant1和billtype2、benant2和billtype 3等的记录...结果集中不需要这些记录

任何人都可以解决这个问题并帮助我找到一个简单的解决方案,例如

Page<Billoflading> findByTenantAndBillTypeIn(Map<String, String> tenantsAndBilltyes, Page page);
Run Code Online (Sandbox Code Playgroud)

我还准备好了 JPA 中的本机查询,我所需要的只是不应该有交叉,因为这是一个非常敏感的数据

我的另一个解决方法是获取记录并应用 java 8 …

mysql jpa spring-data-jpa

4
推荐指数
1
解决办法
2810
查看次数

如何向CriteriaBuilder.or添加Predicates列表

我有一个要附加的条件或条件

我面临的问题是当我迭代List并将其添加到CategoryBuilder然后它需要最后一个Predicate

以下是示例:

public static Specification<Billoflading> hasTenantAndBillingCodeCombination(List<WhoOwnsIt> list,
            Date formattedFromDate, Date formattedToDate, String carrierFilter, String supplierFilter,
            String terminalFilter) {
        return (root, query, cb) -> {
            List<Predicate> predicates = new ArrayList<>();

            for (WhoOwnsIt whoOwnsIt : list) {
                String containsLikePatternForTenant = getContainsLikePattern(whoOwnsIt.getWholesalerTenantID(), true);

                Predicate pred = cb.and(cb.like(cb.lower(root.<String>get("tenant")), containsLikePatternForTenant),
                        cb.equal(cb.lower(root.<String>get("billingCode")), whoOwnsIt.getBillingCode()),
                        cb.greaterThanOrEqualTo(root.<Date>get("scheduleDate"), formattedFromDate),
                        cb.lessThanOrEqualTo(root.<Date>get("scheduleDate"), formattedToDate));

                Predicate predWithTenant = null;

                if (null != carrierFilter) {
                    predWithTenant = cb.and(cb.equal(cb.lower(root.<String>get("tenant")), carrierFilter));
                }

                if (null != predWithTenant)
                    predicates.add(predWithTenant);
                else
                    predicates.add(pred);

            }
            Predicate finalPredicate;
            // This commented section …
Run Code Online (Sandbox Code Playgroud)

java jpa predicate hibernate-criteria spring-data-jpa

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