用Java在JPA中搜索不同字段的算法

问题描述 投票:0回答:1

我有两个实体:

public abstract class ElementMap {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToOne
@JoinColumn(name = "coordinate")
@JsonManagedReference
private Coordinate coordinate;

private String name;[...]

public class Coordinate {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private int x;
private int y;
@Column(name = "map_x")
private int mapX;
@Column(name = "map_y")
private int mapY;

@OneToOne(mappedBy = "coordinate")
@JsonBackReference
private ElementMap elementMap;[...]

在数据库中,我有许多元素(like this)来填充不同的行。

我想创建一个使用Coordinate对象的服务来进行高级搜索。

例如,如果我把:x = 3和map_y = 5,我想找到x = 3 AND map_y = 5的每一行。

如果我把:x = 3,map_y = 5和y = 6,我想找到x = 3 AND map_y = 5 AND y = 6的每一行。

使用Spring JPA,可以在ElementMapRepository接口中创建一些方法,如:

- findByCoordinateMapXAndCoordinateXAndCoordinateY
- findByCoordinateYAndCoordinateX
- findByCoordinateY

等等...

但是有很多界面可以创建来管理所有案例。

那么在Java Spring Boot和/或JPA中创建对象的高级搜索的最佳解决方案是什么?

java hibernate jpa spring-boot search
1个回答
0
投票

我找到了一个很好的教程来回答我的问题,使用QueryDslPredicateExecutor。

http://www.baeldung.com/rest-api-search-language-spring-data-querydsl

© www.soinside.com 2019 - 2024. All rights reserved.