1
0

feat: 增加枚举的使用

This commit is contained in:
2025-08-24 09:59:34 +08:00
parent 0336ee6832
commit 79b1632bc3
3 changed files with 46 additions and 1 deletions

View File

@@ -190,7 +190,7 @@ public class TestApplication {
builder.in(root.get(Employee_.NAME)).value(List.of("Tom", "Mike")), builder.in(root.get(Employee_.NAME)).value(List.of("Tom", "Mike")),
builder.between(root.get(Employee_.age), 0, 50), builder.between(root.get(Employee_.age), 0, 50),
builder.isNotEmpty(root.get(Employee_.company).get(Company_.employees)), builder.isNotEmpty(root.get(Employee_.company).get(Company_.employees)),
builder.notEqual(root.get(Employee_.company).get(Company_.name), "Apple") builder.isMember(Company.Industry.MEDIA, root.get(Employee_.company).get(Company_.industries))
) )
) )
); );
@@ -209,6 +209,8 @@ public class TestApplication {
.and(QEmployee.employee.age.between(0, 50)) .and(QEmployee.employee.age.between(0, 50))
.and(QEmployee.employee.company().employees.isNotEmpty()) .and(QEmployee.employee.company().employees.isNotEmpty())
.and(QEmployee.employee.company().employees.any().name.ne("Tom")) .and(QEmployee.employee.company().employees.any().name.ne("Tom"))
.and(QEmployee.employee.company().industries.contains(Company.Industry.MEDIA))
.and(QEmployee.employee.connections.containsKey(Employee.ConnectionType.EMAIL))
) )
); );

View File

@@ -1,9 +1,16 @@
package com.lanyuanxiaoyao.service.template.entity; package com.lanyuanxiaoyao.service.template.entity;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.ConstraintMode;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners; import jakarta.persistence.EntityListeners;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.ForeignKey;
import jakarta.persistence.JoinTable;
import jakarta.persistence.OneToMany; import jakarta.persistence.OneToMany;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -36,4 +43,23 @@ public class Company extends SimpleEntity {
@OneToMany(mappedBy = "company") @OneToMany(mappedBy = "company")
@ToString.Exclude @ToString.Exclude
private Set<Employee> employees; private Set<Employee> employees;
@ElementCollection
@JoinTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT), inverseForeignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Set<Industry> industries = new HashSet<>();
public enum Industry {
TECHNOLOGY,
FINANCE,
MEDIA,
SERVICE,
GOVERNMENT,
EDUCATION,
HEALTHCARE,
CONSTRUCTION,
RETAIL,
OTHER,
}
} }

View File

@@ -2,15 +2,20 @@ package com.lanyuanxiaoyao.service.template.entity;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.ConstraintMode; import jakarta.persistence.ConstraintMode;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners; import jakarta.persistence.EntityListeners;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated; import jakarta.persistence.Enumerated;
import jakarta.persistence.ForeignKey; import jakarta.persistence.ForeignKey;
import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.MapKeyEnumerated;
import jakarta.persistence.NamedAttributeNode; import jakarta.persistence.NamedAttributeNode;
import jakarta.persistence.NamedEntityGraph; import jakarta.persistence.NamedEntityGraph;
import java.util.HashMap;
import java.util.Map;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@@ -51,8 +56,20 @@ public class Employee extends SimpleEntity {
@ToString.Exclude @ToString.Exclude
private Company company; private Company company;
@ElementCollection
@JoinTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT), inverseForeignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
@MapKeyEnumerated(EnumType.STRING)
@Column(nullable = false)
private Map<ConnectionType, String> connections = new HashMap<>();
public enum Role { public enum Role {
USER, USER,
ADMIN, ADMIN,
} }
public enum ConnectionType {
EMAIL,
PHONE,
ADDRESS,
}
} }