Я использую JPA 2 с Eclipselink 2 и дерби в памяти db для своих тестов.Когда я запускаю свою маленькую тестовую программу, я получаю следующее исключение:
[EL Warning]: 2010-08-12 17: 17: 44.943 - ServerSession (948252856) - Исключение [EclipseLink-4002] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.DatabaseException Внутреннее исключение: java.sql.SQLSyntaxErrorException: «ALTER TABLE» нельзя выполнить для «ARTICLE_ARTICLE», так как он не существует.Код ошибки: 30000 Вызов: ALTER TABLE ARTICLE_ARTICLE DROP CONSTRAINT RTCLrtclsRltdTThsD Запрос: DataModifyQuery (sql = "ALTER TABLE ARTICLE_ARTICLE DROP CONSTRAINT RTCLrtclsRltdTThsD" * * 100 * * *)
* h5 (*) *1005* *5 * * * *5 * * * * * *5 * * * *
[EL Warning]: 2010-08-12 17: 47: 33.179 - ServerSession (1925661675) - Исключение [EclipseLink-4002] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.DatabaseException Внутреннее исключение: java.sql.SQLException: пользователю не хватает привилегии или объект не найден: ARTICLE_ARTICLE Код ошибки: -5501 Вызов: ALTER TABLE ARTICLE_ARTICLE DROP CONSTRAINT FK_ARTICLE_ARTICLE_articlesodID_Qlite_Ru_TQ_LIBLE_TRELE_TREQLTQLARTICLE_ARTICLE DROP CONSTRAINT FK_ARTICLE_ARTICLE_articlesRelatedToThis_ID ")
Стратегия генерации таблиц" drop-and-create ", так почему Eclipselink сообщает мне, что таблица не существует?
Или что-то такое?не так с моим примером класса?
@Entity
public class Article implements Serializable {
@Id @GeneratedValue
private int id;
private String title;
@ManyToMany(mappedBy = "relatedArticles")
private Set<Article> articlesRelatedToThis = new HashSet<Article>();
@ManyToMany(cascade = CascadeType.PERSIST)
private Set<Article> relatedArticles = new HashSet<Article>();
public Article() {}
public Article(String title) {
this.title = title;
}
public int getId() {
return id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Set<Article> getRelatedArticles() {
return relatedArticles;
}
public void addRelatedArticle(Article related) {
relatedArticles.add(related);
}
public void removeRelatedArticle(Article related) {
relatedArticles.remove(related);
}
@PreRemove
public void preRemove() {
for(Article article : articlesRelatedToThis)
article.removeRelatedArticle(this);
}
}