R.S*_*fer 4 java hibernate spring-boot
出现以下错误
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException:Export identifier [order_signal] encountered more than once
Run Code Online (Sandbox Code Playgroud)
我有以下课程:
@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;
...
}
Run Code Online (Sandbox Code Playgroud)
@Entity
@JsonRootName("OrderSignalDAO")
public class OrderSignal extends TransactionComponent {
...
}
Run Code Online (Sandbox Code Playgroud)
@Entity(name = "TransferSignal")
public class TransferSignal extends TransactionComponent {
....
}
Run Code Online (Sandbox Code Playgroud)
在 OrderSignal 类中没有其他 @Id,并且 TransactionComponent 中也没有 id 的 getter/setter。
为什么会出现这个错误?这是什么意思?如何修复它?
我遇到的发生上述问题的一种情况是实体类如下
`@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;
....`
Run Code Online (Sandbox Code Playgroud)
在上面的场景中,会抛出以下错误,原因是: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"),错误就会消失。如果实体名称与参数名称等中的任何位置匹配。那么这可能会发生。