2010-02-18 18 views
8

Veritabanını DDL oluşturmak için Hibernate hbm2ddl aracını kullanıyorum bir JPA/Hazırda Beklet veri modeli var. CHAR olması gereken bazı dizelerim var ve veritabanında VARCHAR olabilir. DDL'nin el düzenlemesini en aza indirmek istiyorum (bazılarının olması gerekenin farkındayım).JPA/Hazırda Bekleme DDL üretimi; CHAR vs VARCHAR

Bu konuda nasıl gitmem gerektiğini bilen var mı? Tüm Strings VARCHARS veya CHARS'ı saldırıya uğramış bir lehçe ile yapabileceğimin farkındayım, ancak veritabanında her zaman uygun olan bu değil.

Sınıflarımda özel sütun tanımı metninden kaçınarak, ek açıklamalar veya aop ile bunu yapmak isterim.

Teşekkürler.

cevap

4

Sonunda, lehimdeki bir tür için uzunluk sınırı belirtebileceğinizi öğrendim. Ben istiyordum değil tam olarak ne O

registerColumnType(Types.VARCHAR, 10, "char($l)"); 

, ama bu yeterince iyi: Yani, 10 uzunluğunda altında herhangi bir şey olmalı varchar üzerinde Char ve bir şey olması gerektiğine karar verdik. Bunu daha önce bulamadığım için üzgünüm.

11

Veritabanındaki CHAR ile eşlemek istediğiniz dizeleri @Column(columnDefinition="CHAR(<your-char-length>)") ile ekleyin.

+1

Cevabınız için teşekkürler, ancak son paragrafımda bundan bahsediyorum. ColumnDefinition kullanmaktan kaçınmaya çalışıyorum. Daha iyi bir yol olduğunu umuyordum, çünkü bu makul bir istek gibi gözüküyordu. –

+0

Ek açıklama ekleme ve ek açıklama özniteliği ekleme arasında çok fazla bir fark yoktur. – mtpettyp

+1

Ah, ancak fark, özniteliğin içeriğidir. Bu metin doğrudan schema ddl'e yerleştirilir, dolayısıyla doğal olarak veri tabanına özgüdür. Ayrıca, metindeki sütunun uzunluğunu kopyalamak zorundayım. Bu özel örnek o kadar da kötü değil ama yapabilirsem kaçınmaya değer. Yine de umut verici görünmüyor, itiraf etmeliyim. –