我在Glassfish 3.1的Eclipse服務器適配器上遇到了一些問題。我正在使用JPA自動生成的標識符。如果服務器正在運行,並且我有一個JPA創建和丟棄策略,比每次發生的熱部署我有我的臉上泛起一塊大肥肉Eclipse的錯誤消息時:Eclipse Glassfish 3.1適配器 - SEQUENCE已存在錯誤
cannot Deploy MyWebApp Deployment Error for module: MyWebApp:
PER01003: Deployment encountered SQL Exceptions: PER01000: Got SQLException executing statement "CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(38), PRIMARY KEY (SEQ_NAME))":
org.postgresql.util.PSQLException: ERROR: relation "sequence" already exists
我知道這只是一個Glassfish警告(該死的老...:http://java.net/projects/glassfish/lists/persistence/archive/2006-11/message/221)並不危險(這是因爲drop.ddl刪除了一個序列表行而不是整個表)。
這只是一個PITA,每次保存資源時都會彈出一個錯誤消息。任何想法如何擺脫它而不失去創建和放置功能?至少使在開發它不打擾...
我的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0">
<persistence-unit name="JPATestsCascadePU" transaction-type="JTA">
<jta-data-source>jdbc/myDB</jta-data-source>
<properties>
<property name="eclipselink.ddl-generation"
value="drop-and-create-tables" />
</properties>
</persistence-unit>
</persistence>
示範實體使用自動生成的ID:
@Entity
public class Website {
@Id
@GeneratedValue
private long id;
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
謝謝@vkraemer!重新部署的放緩可能是正確的。但是,我使用此設置來動態測試JPA映射,驗證以及與事務的交互。這些類型的應用程序非常小 - 我將它們當作煙霧測試對待,因此我真的很喜歡這種乾淨的重新創建功能,並在每次「保存」時自動發佈。它允許我在更改的類上點擊ctrl + s並忘記其餘的。 我會熱切期待星期一:-)再次感謝! –
添加後,插件就像一個魅力。非常感謝文斯! –
我將Glassfish 3.1.2與ant一起使用,部署並重新部署我的類,所以此錯誤似乎也適用於最新版本的Glassfish。 – lanoxx