【发布时间】:2020-10-19 17:01:37
【问题描述】:
我在 spring boot 和 angular 7 中有一个项目。
数据以表格形式显示。
显示 JPA 的所有数据 findAll() 方法很好,但现在的问题是我想使用 MyView + 过滤器,用户可以通过它选择要显示的列。此外,过滤器应仅应用于可见列。
这是我的主要实体
@Entity
@Table("user")
@Getter
@Setter
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="first_name", nullable = false, length = 500)
private String firstName;
@Column(name="last_name", length = 2000)
private String lastName;
@Column(name="imei", length = 20)
private String imei;
@Column(name="address", length = 10)
private String address;
@Column(name="pincode", length = 10)
private String pincode;
@Column(name="latitude", length = 20)
private String latitude;
@Column(name="longitude", length = 20)
private String longitude;
@Column(name="contact_no", length = 10)
private String contactNo;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="country_id", nullable = false)
private Country country;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="state_id", nullable = false)
private State state;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="city_id", nullable = false)
private City city;
@Column(name="is_active", columnDefinition = "tinyint(1) default 1", insertable = false)
private Boolean isActive;
@Column(name="created_on")
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date createdOn;
public User() {
}
}
这是 MyView 实体
@Entity
@Table("my_view")
@Getter
@Setter
public class MyView {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="user_id", nullable = false)
@JsonProperty( access = Access.WRITE_ONLY )
private User user;
@Column(name="column_name", nullable = false, length = 500)
private String columnName;
@Column(name="visible", columnDefinition = "tinyint(1) default 1", insertable = false)
private Boolean visible;
public MyView() {
}
}
现在,假设我得到
来自 myview 表和过滤器的 first_name、last_name、pincode、imei 和 contact_no 从 UI 应用,例如 pincode 从 4220% 开始 和 last_name 是“毛茸茸的”。
那么如何在 JPA 中创建查询。
注意:每个用户的列选择都会改变,相应的过滤器也会改变。
【问题讨论】:
-
您可以为此动态构建查询。见baeldung.com/… 和spring.io/blog/2011/04/26/…
标签: spring-boot hibernate jpa spring-data-jpa angular7