2011-06-08 12 views
5

Uygulamamda JPA ek açıklamaları ile açıklanmış birkaç varlık POJO var. Ayrıca hbm2ddl, bu varlıklar için tablo oluşturmak üzere yapılandırılmıştır. Uygulama ilk kez başladığında, tüm tablolar bir tane dışında başarıyla oluşturulur. İşte varlık kaynak kod:Tablo, hibernate's hbm2ddl tarafından oluşturulmamış

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 
import javax.persistence.Table; 

@Entity 
@Table(name = "REQUESTS") 
public class InterpreterRequest implements java.io.Serializable { 

    private static final long serialVersionUID = -1017432073323298138L; 

    @Id 
    @GeneratedValue 
    private long id; 
    @Column(name = "quantity") 
    private int quantity; 
    @Column(name = "from") 
    private String from; 
    @Column(name = "to") 
    private String to; 
    @Column(name = "spec") 
    private String spec; 
    @ManyToOne(targetEntity = Event.class) 
    private Event event; 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public int getQuantity() { 
     return quantity; 
    } 

    public void setQuantity(int quantity) { 
     this.quantity = quantity; 
    } 

    public String getFrom() { 
     return from; 
    } 

    public void setFrom(String from) { 
     this.from = from; 
    } 

    public String getTo() { 
     return to; 
    } 

    public void setTo(String to) { 
     this.to = to; 
    } 

    public String getSpec() { 
     return spec; 
    } 

    public void setSpec(String spec) { 
     this.spec = spec; 
    } 

    public Event getEvent() { 
     return event; 
    } 

    public void setEvent(Event event) { 
     this.event = event; 
    } 

} 

Ve burada hazırda oturum fabrika yapılandırma aşağıdaki gibidir:

<bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="hibernateProperties"> 
       <props> 
        <prop key="hibernate.hbm2ddl.auto">update</prop> 
        <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
        <prop key="hibernate.connection.pool_size">5</prop> 
        <prop key="hibernate.show_sql">true</prop> 
        <prop key="hibernate.cglib.use_reflection_optimizer">true</prop> 
        <!-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
         <prop key="hibernate.hibernate.cache.use_query_cache">true</prop> --> 
       </props> 
      </property> 
      <property name="annotatedClasses"> 
       <list> 
        <value>com.ceonline.inter.shared.model.User</value> 
        ... 
<value>com.ceonline.inter.shared.model.InterpreterRequest</value> 
       </list> 
      </property> 
     </bean> 

Ne tabloları oluşturulurken InterpreterRequest sınıfını atlamak için hbm2ddl için bir neden olabilir?

cevap

8

Hangi veritabanını kullandığınızı söylemediniz, ancak sorun muhtemelen sütun adlarınızdan birinin veya tablo adının ayrılmış bir sözcük olması. from sütunları, tüm veritabanı lezzetlerinde kesinlikle ayrılmış bir sözcüktür.

düzeltmek için: Kelimeleri ayrılmış isimler kaçmak gerekir

. şey ayrılmış bir kelime olup olmadığını

@Column(name = "`from`") 
private String from; 

basit bir test öğrenmek için elle tablo oluşturmak için çalışmaktır - SQL ayrıştırıcı olacak hızla: Burada değişmezleri anahtar kelimeleri yapmak için geri kullanır keneler mysql için çözüm,) var Sorunun nerede olduğunu söyle. Diğer sütun isimlerini ve tablo adını kontrol edin

+0

Çok teşekkürler! Sorun gerçekten de 'from' ayrılmış sözcüktür. –

+0

Evet, kendimle benzer bir sorun yaşadım. Altta yatan DBMS ve hazırda bekletme modları tarafından uygulanmayan bazı ifadeler kullanıldı. Özellikle bir yerde bir istisna varsayalım veya en azından hata günlüğe kaydedilir. Aslında şunu söyleyebilirim ki, bunu bir yerde belirtebilir/görebilirsin, sadece nerede olduğu hakkında hiçbir fikrin yok. – Voo

İlgili konular