2013-03-08 36 views
0

我在數據庫中有一些固定長度的字段。我對JPAJSR 303相當陌生。JPA vs JavaBeans驗證(JSR 303)vs你的解決方案:在持久化之前自動截斷字段

JPA不會讓我堅持一個字段的大小超過db中允許的字段的實體(這是我想要的);並用length參數描述@Column s僅對ddl生成有用。

此外,AFAIK,描述參數與JSR 303的@Size只會觸發一個答案,當我希望該字段被修改。

我想知道使用JSR 303,JPA或其他方法處理截斷的標準方式是什麼。

編輯:是否有可能在JPA中啓用一些自動截斷?

最好的問候

+0

根據您使用的數據庫,您可能會自動截斷長字段。 – 2013-03-08 16:21:02

+0

實體中的字段設置者可以簡單地截斷該值。 – 2013-03-08 16:23:14

+0

感謝您的回答。數據庫是Oracle 10g,但我不想用數據庫方式來做到這一點。再加上我的DBA脾氣暴躁。 – BenoitParis 2013-03-08 16:23:15

回答

1

像JB Nizet建議它可以用setter來完成。但是這不會使它成爲一個嚴格的Java Bean。

你也可以在數據庫中實現它,但這會使你的實現更加便攜。

最好的方法是將此邏輯保持在Bean或DB之外。即在你的應用邏輯中。

更新:

如果您需要做截斷在JPA看看@EntityListeners和回調。 http://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html

+0

是的,我同意。我應該把它放在某種數據格式類中。但是,我想避免將實體字段的描述放在很遠的地方。你知道一個好的模式嗎? – BenoitParis 2013-03-08 16:40:59