2017-06-05 4 views
0

を落としたときに私はこのようなエンティティクラスを持っている:Hibernateは不足している列の列

@Entity 
@Table (name="CART_ITEM") 
public class CartItem { 

@Id 
@GeneratedValue (strategy=GenerationType.AUTO) 
@Column (name="ID") 
private int id; 

@Column (name="AMOUNT") 
private int amount; 
... 

それはデータベースと正常に動作します。私は列の金額をドロップし、アプリケーションを(getterとsetterで)上記の対応するフィールドを削除して再起動したときにしかし、私はこれを取得:

Exception sending context initialized event to listener instance of class com.retailstore.AppContextListener 
javax.persistence.PersistenceException: [PersistenceUnit: manager] Unable to build Hibernate SessionFactory 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882) 
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) 
at com.retailstore.AppContextListener.createEntityManagerFactory(AppContextListener.java:76) 
at com.retailstore.AppContextListener.contextInitialized(AppContextListener.java:66) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing column [AMOUNT] in table [CART_ITEM] 
at  org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateTable(SchemaValidatorImpl.java:85) 
at org.hibernate.tool.schema.internal.SchemaValidatorImpl.doValidation(SchemaValidatorImpl.java:50) 
at  org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:91) 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:473) 
at  org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) 
at  org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) 
... 14 more 

私はこの前に何度も行っているし、この問題に遭遇したことがありません。誰か提案はありますか?

更新日:

私は問題が解決したと思います。 WEB-INF/classesの下にはまだ古いクラスがあります。

+0

Hmm。フィールドを削除してからプロジェクトを再構築しましたか? – tsolakp

+0

ええ、再構築、再起動した日食、何か再起動があります.. – user2908112

+0

解決策を見つけたら、自分の質問に答えることを検討してください。 –

答えて

0

WEB-INF/classesに古いクラスがこのエンティティと競合していることが認識されました。私はそれらを削除し、アプリケーションが働いた。

+0

これは、あなたが正しく構築されなかったことを意味します。あなたのEclipseビルドは、Webプロジェクトを行うように設定されていないか、Javaファイルへの変更がEclipseになっていませんでした。 – tsolakp

+0

はい、正しく構成されていません。エクスプローラウィンドウで更新されたクラスを見ることはできますが、日食では見ることができません。 – user2908112

関連する問題