import org.javers.core.metamodel.annotation.DiffIgnore;
import javax.persistence.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Size;
import java.util.Set;
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "project")
public class ProjectComponent extends AbstractEntity {
@Id
@Column(name = "id", nullable = false, length = 128)
private String id;
@Column(name = "project_name", nullable = false)
private String projectName;
@Column(name = "name", nullable = false, columnDefinition = "nvarchar")
@Size(max = 512, message
= "Cannot exceed 512 characters")
private String name;
}
@Size(max=512) 我在物體欄位中使用了它,但是每當我越過大小 512 時,這個東西應該停止在那個特定的欄位上,不應該持久化到 DB 中,這意味著不應該從 DB 中拋出例外。
uj5u.com熱心網友回復:
作為ProjectComponent一個物體類,我建議您應該使用@Length注釋或在注釋中添加length屬性@Column。我在網上找到了這篇文章,它解釋了這些 @Size 和 @Length 注釋之間的區別。請看一下。@Size 和 @Length 之間的區別。
uj5u.com熱心網友回復:
也許你應該一起使用@Size 和@Valid。
uj5u.com熱心網友回復:
@PrePersist
@PostLoad
void markNotNew() {
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<AbstractEntity>> constraintViolations =
validator.validate( this );
constraintViolations.size();
if(!constraintViolations.isEmpty()) {
throw new ResourceNotFoundException(constraintViolations.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining()));
}
this.isNew = false;
}
得到解決方案謝謝朋友。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454154.html
