Spring Boot:多次遇到导出标识符

时间:2018-03-07 22:01:47

标签: java hibernate spring-boot

发生以下错误

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException:Export identifier [order_signal] encountered more than once

我有以下课程:

tradingbot.persistence.model.order.TransactionComponent

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class TransactionComponent {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name = "id", updatable = false, nullable = false)
    protected Long id;

    ...
}

tradingbot.persistence.model.order.OrderSignal

@Entity
@JsonRootName("OrderSignalDAO")
public class OrderSignal extends TransactionComponent {
    ...
}

tradingbot.persistence.model.order.TransferSignal

@Entity(name = "TransferSignal")
public class TransferSignal extends TransactionComponent {
    ....
}

在OrderSignal类中,没有其他@Id,并且在TransactionComponent中也没有id的getter / setter。

为什么会出现此错误?这是什么意思?如何解决?

2 个答案:

答案 0 :(得分:1)

我使用IntelliJ进行开发,而在我的“out”目录中则是旧的.class文件。一些java类已经被删除,但不知何故不在“out”目录中。

作为解决方案,我删除了整个“out”目录。

答案 1 :(得分:1)

我遇到上述问题的一种情况是,实体类如下所示

`@Entity
 @Table(name = "universe")
 public class Universe {
    @GenericGenerator(
            name = "universeSequenceGenerator",
            strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
            parameters = {
                    @Parameter(name = "sequence_name", value = "universe"),
                    @Parameter(name = "initial_value", value = "1"),
                    @Parameter(name = "increment_size", value = "1")
            }
    )
    @Id
    @GeneratedValue(generator = "universeSequenceGenerator")
    private Integer id;
    private String name; 
    ....`

在上述情况下,将引发以下错误:org.hibernate.tool.schema.spi.SchemaManagementException:Export identifier [universe] encountered more than once

这是因为@Parameter(name = "sequence_name", value = "universe"),当我们将其更改为@Parameter(name = "sequence_name", value = "universeSeq")时,错误消失了。如果实体名称与参数名称中的任何地方匹配,等等。那么这可能会发生。