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.between(root.get(Employee_.age), 0, 50),
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.company().employees.isNotEmpty())
.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;
import jakarta.persistence.Column;
import jakarta.persistence.ConstraintMode;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
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 java.util.HashSet;
import java.util.Set;
import lombok.Getter;
import lombok.Setter;
@@ -36,4 +43,23 @@ public class Company extends SimpleEntity {
@OneToMany(mappedBy = "company")
@ToString.Exclude
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.ConstraintMode;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.ForeignKey;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.MapKeyEnumerated;
import jakarta.persistence.NamedAttributeNode;
import jakarta.persistence.NamedEntityGraph;
import java.util.HashMap;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@@ -51,8 +56,20 @@ public class Employee extends SimpleEntity {
@ToString.Exclude
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 {
USER,
ADMIN,
}
public enum ConnectionType {
EMAIL,
PHONE,
ADDRESS,
}
}