gpt4 book ai didi

java - 从 Hibernate 到直接 JPA

转载 作者:行者123 更新时间:2023-12-01 11:20:08 25 4
gpt4 key购买 nike

我们被要求更改一些软件。此刻其中一件事必须更换的是Hibernate。他们想直接使用 JPA,所以很容易从 Hibernate 切换到 openJPA,再到……

使用的注释之一是:

@NotEmpty(message = "Field is not filled")

导入:

import org.hibernate.validator.constraints.NotEmpty;

我的大学想要使用:

@NotNull(message = "Field is not filled")
@Size(message = "Field is not filled", min = 1)

我不喜欢这样。它当然不是干的。 (它被使用了数百次。)我更喜欢定义我们自己的 NotEmpty。但我从来没有工作过带注释。如何做到这一点?

---- 添加当前解决方案:

重命名了该函数,因为将来它可能会扩展。

import        java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.FIELD;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.ReportAsSingleViolation;

@Documented
@Constraint(validatedBy = { })
@Target({ FIELD })
@Retention(RUNTIME)
@ReportAsSingleViolation
@NotNull
@Size(min = 1)
public @interface CheckInput {
public abstract String message() default "Field is not filled";

public abstract String[] groups() default { };
}

最佳答案

查看@NotEmpty源代码 - 事实上它只包装了 validator @NotNull和@Size(min=1)。

您可以简单地创建自己的类,它看起来与 Hibernate Validator 的 @NotEmpty 完全相同:

@Documented
@Constraint(validatedBy = { })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@ReportAsSingleViolation
@NotNull
@Size(min = 1)
public @interface NotEmpty {
String message() default "{org.hibernate.validator.constraints.NotEmpty.message}";

Class<?>[] groups() default { };

Class<? extends Payload>[] payload() default { };

/**
* Defines several {@code @NotEmpty} annotations on the same element.
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
public @interface List {
NotEmpty[] value();
}
}

关于java - 从 Hibernate 到直接 JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com