簡體   English   中英

JPA屬性java.net.URL

[英]JPA property java.net.URL

HI,

我有一個對象,它有一段與之相關的URL信息。 目前我將此URL保存在一個簡單的String屬性中,但是java.net.URL會為我提供額外的好處,例如檢測格式錯誤的URL等。

另一方面,如果JPA只是為URL-Object創建了一個LOB,我認為它非常難看。 有誰知道兼容的JPA提供程序如何將java.net.URL類型的屬性持久化到數據庫?

根據JPA規范:

實體的持久字段或屬性可以是以下類型:Java原始類型; java.lang.String中; 其他Java可序列化類型(包括基本類型的包裝,java.math.BigInteger,java.math.BigDecimal,java.util.Date,java.util.Calendar [7],java.sql.Date,java.sql.Time ,java.sql.Timestamp,user-de fi ned serializable types,byte [],Byte [],char [],andCharacter []); 枚舉; 實體類型和/或實體類型集合; 和可嵌入的類(參見第2.1.5節)。

加上對收藏品的支持。 但沒有URL原始支持。 然而,它們將被支持為Serializable ,我想這將導致你提到的LOB。

但是你應該能夠輕松地避開:你可以在一個字段中將URL作為String ,然后將一個getter / setter從String轉換為URL 然后使用注釋映射字段。

或者相反:字段中的java.lang.URL ,以及從URL轉換為String的getter / setter,然后使用注釋映射getter / setter。 我認為它也有效。

你也可以使用JPA AttributeConverter 這里解釋把URL對象映射到String列(Hibernate開箱即用)

或者,如果您只對驗證感興趣,則可以使用BeanValidation。 有一個@URL在HibernateValidator擴展注釋您也可以創建自己的約束,如解釋在這里

我個人更喜歡BeanValidation解決方案,因為考慮到url作為java.net.URL帶來一些復雜性:需要JPA AttributeConverter ,JSF Converter ,JAXB Adapter ...而它只是用於驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM