当前位置: 首页 > 知识库问答 >
问题:

NotNull不工作,列(nullable=false)工作

酆阳煦
2023-03-14

我有一个Spring实体,其中有一个用javax.validation.constraints中的@NotNull注释的字段

@Entity
public abstract class IdentifiableNamedEntity {
    @NotNull
    @Column(unique = true)
    private String name;
}

问题是,如果为name字段设置了空值,则将其存储在数据库中。但是,如果我按以下方式更改类,它会引发我想要接收的异常:

@Entity
public abstract class IdentifiableNamedEntity {
    @Column(unique = true, nullable=false)
    private String name;
}
<beans ...>
<context:property-placeholder location="classpath*:spring/database.properties" />
<context:component-scan base-package="com.lh.clte" />
<import resource="classpath:spring/applicationContext-persistence.xml" />
</beans>
<beans ...>
<import resource="classpath:spring/applicationContext-jpa.xml" />

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${database.driverClassName}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
    <property name="initialSize" value="3" />
    <property name="maxActive" value="10" />
</bean>

<tx:annotation-driven mode="proxy"
    transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
    id="transactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    id="entityManagerFactory">
    <property name="persistenceUnitName" value="persistenceUnit" />
    <property name="dataSource" ref="dataSource" />
</bean>
</beans>

ApplicationContext-JPA

<beans ...>
<jpa:repositories base-package="com.lh.clte.repository" />
</beans>

由于我使用的是存储库,因此我还报告了corrisponding实体存储库:

@Repository
public interface IdentifiableNamedEntityRepository extends JpaSpecificationExecutor<IdentifiableNamedEntity>, JpaRepository<IdentifiableNamedEntity, Long> {
}

共有1个答案

唐照
2023-03-14

@NotNull是一个JSR303 Bean验证注释。它与数据库约束本身无关。此注释用于验证。@column(nullable=false)是将列声明为非空的方法。最后一个注释用于指示数据库模式的详细信息

 类似资料:
  • 我对单向映射有问题,需要帮助。 我有2个实体具有相同的单向映射。 第一个: 第二条: 如果我试图保存一个实体,Hibernate抛出一个异常,因为第二个实体定义(非空)。 组织。冬眠PropertyValueException:not null属性引用null或瞬态值 如果我将JoinColumn更改为nullable=true,则单向映射不起作用,列表不会保存在DB中。我能做些什么使它工作?

  • 我正在使用swagger codegen创建一个spring服务器。 我还使用了-属性,如Swagger-Springfox中所述,默认情况下总是生成一些响应消息(401,403...)。我怎样才能移除它们? SwaggerConfig.java: 相关部分:Api。爪哇: 但是招摇过市的ui看起来仍然像:招摇过市的ui:ResponseMessageable 看来是不起作用。 如何禁用这些默认错

  • 问题内容: 当它们出现在的字段/获取器上时,它们@Entity之间有什么区别?(我通过Hibernate保留了Entity )。 它们每个都属于什么框架和/或规范? 位于中。在中说 带注释的元素不能为空 但是它没有提到数据库中元素的表示形式,那么为什么要在列中添加约束呢? 问题答案: 是JSR 303 Bean验证批注。它与数据库约束本身无关。由于Hibernate是JSR 303的参考实现,因此

  • 我正在尝试使用Hibernate验证器制作简单的验证表单。我的Customer类中有两个字段,我希望其中一个字段是必需的(lastName)。关键是,即使im没有填充这个字段,我也不会得到错误消息,BindingResult也不包含任何错误。我的代码中缺少什么吗? 编辑:表单代码: 编辑2:我添加到类路径validation-api.jar(包含抽象API和注释扫描程序)。 还插入了@initbi

  • 问题内容: 当它们出现在的字段/获取器上时,它们之间有什么区别?(我通过 Hibernate 保留了Entity )。 它们每个都属于什么框架和/或规范? 位于中。在javadoc中说 带注释的元素不能为null 但是它没有说数据库中元素的表示形式,那么为什么要在列中添加约束呢? 问题答案: 是JSR 303 Bean验证 批注。它与数据库约束本身无关。由于Hibernate是JSR 303的参考

  • 我有一个扩展JPopupMenu的类MyPopupMenu。在这个弹出菜单中,我添加了一个带有ActionListener的JMenuItem,它调用一个需要几分钟才能返回的进程。我想在按下这个项目后立即关闭弹出菜单。我在MyPopupMenu类中的方法是这样的: 这不管用。在我按下“一”项后,进程开始,但弹出菜单保持打开状态,直到进程返回(几分钟)。是否可以使弹出菜单消失,但进程继续运行?