postgresql 为什么JavaEntity字段上指定的javax.validation.constraints没有被HibernateMap到数据库模式?

daolsyd0  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(133)

当SpringBoot应用程序启动时,我希望Hibernate自动创建数据库模式,这可以正常工作。
但是我没有看到javax.validation.constraints对生成的模式有任何影响。
我有以下Gradle构建文件:

plugins {
    id("java")
    id("war")
    id("org.springframework.boot") version "2.7.11"
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    implementation ("org.springframework.boot:spring-boot-starter-data-jpa:2.7.11")

    implementation("org.postgresql:postgresql:42.6.0")

    implementation("javax.xml.bind:jaxb-api:2.3.0")

    implementation("javax.validation:validation-api:2.0.1.Final")

    implementation("org.hibernate.validator:hibernate-validator:6.0.1.Final")
}

字符串
下面是Java Entity类:

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id", nullable = false)
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Size(max = 10)
    @NotNull
    public String text;
}


为什么当我连接到我的数据库时,我看不到任何为Person中的text字段指定的约束?
text列上不应该有另一个'not null'约束和length约束吗?


的数据
application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect

spring.jpa.hibernate.ddl-auto=create

spring.datasource.username=postgres
spring.datasource.password=password

mfuanj7w

mfuanj7w1#

要添加约束,您可以始终在@Column注解中定义它们

@Column(length = 10, nullable = false)
public String text;

字符串

相关问题