我知道这两个@JsonIgnore和@JsonManagedReference,@JsonBackReference用于解决Infinite recursion (StackOverflowError),就是这两者之间的区别?
注意: 这些是杰克逊注释.
我一直在构建一个简单的应用程序来学习angular.js.到目前为止,我连接了MEAN堆栈中的所有部分,我能够从Mongo中保存和检索数据.
该应用程序本质上是一个待办事项列表.用户可以创建一个项目,在项目内部创建带有"todos"的"卡片",然后可以从一个状态移动到另一个状态("积压","正在进行","完成"等)
我希望能够将通知推送给所有连接的人,告诉他们的应用程序需要刷新才能获得最新的待办事项.换句话说,假设用户A向项目A添加了一张新卡,我想向正在观看项目A的所有用户发送消息,以便他们的应用程序发出项目刷新以获得最新和最好的.
有关如何进行的任何建议?我需要将哪种技术添加到MEAN堆栈才能执行此类操作?
提前致谢
我使用spring,spring-data,spring-cronjobs和java-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) 我在用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) 我今天遇到了一个有趣的问题:
让我们假设以下条件
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) 有一个表,我需要通过在配对值列表中应用和条件来获取分页记录,下面是解释
假设我有一个类Billoflading,其中有各种字段表中的两个重要字段是
tenantbilltype我有一个包含值的对列表
[
{`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 …
我有一个要附加的条件或条件
我面临的问题是当我迭代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 ×5
jpa ×3
spring ×3
mysql ×2
spring-data ×2
angularjs ×1
hibernate ×1
jackson ×1
javascript ×1
json ×1
mean-stack ×1
mongodb ×1
predicate ×1
spring-mvc ×1
transactions ×1