亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

困惑:@NotNull vs @Column(nullable = false)

困惑:@NotNull vs @Column(nullable = false)

當它們出現在的字段/獲取器上時,它們@Entity之間有什么區別?(我通過Hibernate保留了Entity )。它們每個都屬于什么框架和/或規范?@NotNull位于中javax.validation.constraints。在javax.validation.constraints.NotNulljavadoc中說帶注釋的元素不能為null但是它沒有說數據庫中元素的表示形式,那么為什么nullable=false要在列中添加約束呢?
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

@NotNull是JSR 303 Bean驗證批注。它與數據庫約束本身無關。由于Hibernate是JSR 303的參考實現,因此它會智能地選擇這些約束并將它們轉換為數據庫約束,因此您只需付出1即可獲得兩個。@Column(nullable = false)是JPA聲明列為非空的方法。即,前者用于驗證,而后者則用于指示數據庫架構詳細信息。您將從Hibernate的驗證批注中獲得一些額外的(歡迎使用?。椭?。


查看完整回答
反對 回復 2019-10-15
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

休眠的JPA提供程序的最新版本@NotNull默認將Bean驗證約束(JSR 303)應用于DDL(由于hibernate.validator.apply_to_ddl property默認為true)。但是,不能保證其他JPA提供程序也可以做到這一點。


@NotNull在驗證JVM中的Java bean時,應使用bean驗證批注來確保將bean屬性設置為非空值(這與數據庫約束無關,但在大多數情況下應與它們對應)。


您還應該使用JPA批注,例如@Column(nullable = false)給jpa提供者提示以生成正確的DDL,以創建具有所需數據庫約束的表列。如果您可以或希望依靠像Hibernate這樣的JPA提供程序,該提供程序默認將Bean驗證約束應用于DDL,則可以忽略它們。


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 2032 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號