diff --git a/src/test/java/com/lanyuanxiaoyao/service/template/TestApplication.java b/src/test/java/com/lanyuanxiaoyao/service/template/TestApplication.java index 0f6970e..f34132b 100644 --- a/src/test/java/com/lanyuanxiaoyao/service/template/TestApplication.java +++ b/src/test/java/com/lanyuanxiaoyao/service/template/TestApplication.java @@ -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)) ) ); diff --git a/src/test/java/com/lanyuanxiaoyao/service/template/entity/Company.java b/src/test/java/com/lanyuanxiaoyao/service/template/entity/Company.java index 9f5aac9..80c1df8 100644 --- a/src/test/java/com/lanyuanxiaoyao/service/template/entity/Company.java +++ b/src/test/java/com/lanyuanxiaoyao/service/template/entity/Company.java @@ -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 employees; + + @ElementCollection + @JoinTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT), inverseForeignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private Set industries = new HashSet<>(); + + public enum Industry { + TECHNOLOGY, + FINANCE, + MEDIA, + SERVICE, + GOVERNMENT, + EDUCATION, + HEALTHCARE, + CONSTRUCTION, + RETAIL, + OTHER, + } } diff --git a/src/test/java/com/lanyuanxiaoyao/service/template/entity/Employee.java b/src/test/java/com/lanyuanxiaoyao/service/template/entity/Employee.java index 7eba730..7f4bc4c 100644 --- a/src/test/java/com/lanyuanxiaoyao/service/template/entity/Employee.java +++ b/src/test/java/com/lanyuanxiaoyao/service/template/entity/Employee.java @@ -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 connections = new HashMap<>(); + public enum Role { USER, ADMIN, } + + public enum ConnectionType { + EMAIL, + PHONE, + ADDRESS, + } }