Eclipse Glassfish 3.1适配器 - SEQUENCE已存在错误

时间:2011-10-20 18:54:10

标签: eclipse jpa glassfish jpa-2.0 eclipselink

我对Glassfish 3.1的Eclipse服务器适配器有一些问题。我正在使用JPA自动生成的标识符。如果服务器正在运行并且我有一个JPA的创建和删除策略,那么每次热重新部署发生时,我都会在我的脸上抛出一个很大的Eclipse错误消息:

  

无法为模块部署MyWebApp部署错误:MyWebApp:

     

PER01003:部署遇到SQL异常:   PER01000:得到SQLException执行语句“CREATE TABLE SEQUENCE(SEQ_NAME   VARCHAR(50)NOT NULL,SEQ_COUNT DECIMAL(38),PRIMARY KEY(SEQ_NAME))“:

     

org.postgresql.util.PSQLException:错误:关系“序列”已存在

我知道这只是一个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;
    }    
}

1 个答案:

答案 0 :(得分:1)

您不会喜欢这个答案:在初始运行服务器之后关闭创建和删除功能。

说实话,创建和删除似乎会减慢重新部署...这就是保存资源时发生的情况。

您可以通过关闭自动发布来减少消息显示...

注意:此问题适用于2011-10-24之前与GlassFish Server 3.1.1及更年轻版交互时发布的Eclipse的GlassFish集成插件。