我有一个可嵌入的类来保存引用ID,因为我不想在每个JPA实体中重复列的详细信息。
@Data
@Embeddable
public class BusinessReference {
private static final int LENGTH = 64;
@Column(
columnDefinition = "VARCHAR(64)",
length = LENGTH,
updatable = false,
nullable = false,
unique = true)
@Size(min = LENGTH, max = LENGTH)
@Pattern(regexp = "^[!-~]+$")
private String referenceId;
}
现在我有一个实体
@Data
@Entity
public class Sample {
@Id
@GeneratedValue
@Column(
updatable = false,
nullable = false,
columnDefinition = "BINARY(16)")
private UUID id;
@Embedded
private BusinessReference businessReference;
}
我想做的是创建一个通用接口,该接口允许我按参考ID搜索,如果需要,可以使用该ID扩展另一个CrudRepository
。请注意,我想要的参数是String而不是对象。
public interface BusinessReferenceRepository<T> {
Optional<T> getByBusinessReference(String referenceId);
}
答案 0 :(得分:0)
我通过创建一个default
来解决此问题,该类型允许我按原始类型进行调用。
public interface BusinessReferenceRepository<T> {
Optional<T> getByBusinessReference(BusinessReference businessReference);
default Optional<T> getByBusinessReference(String referenceId) {
return getByBusinessReference(new BusinessReference(referenceId));
}
}