在使用Hibernate和MySQL的Spring MVC应用程序中,我有一个抽象的超类BaseEntity,它管理模型中所有其他实体的ID值.该id领域使用@GeneratedValue.每当我的代码试图保存任何扩展的子类时,我都会遇到问题BaseEntity.这个问题带有的选择GenerationType了@GeneratedValue.
在我的代码中BaseEntity尝试保存到底层MySQL数据库的子类的每个地方,我收到以下错误:
ERROR SqlExceptionHelper - Table 'docbd.hibernate_sequences' doesn't exist
Run Code Online (Sandbox Code Playgroud)
我已经在SO和谷歌上阅读了很多关于此的帖子,但是他们要么处理其他数据库(不是MySQL),要么他们不处理抽象超类.我无法通过使用来解决问题,GenerationType.IDENTITY因为我使用抽象超类来管理id模型中所有实体的字段.同样,我不能使用,GenerationType.SEQUENCE因为MySQL不支持序列.
那么我该如何解决这个问题呢?
这是以下代码BaseEntity.java:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
protected Integer id;
public void setId(Integer id) {this.id = id;}
public Integer getId() {return id;}
public boolean isNew() {return (this.id == null);}
}
Run Code Online (Sandbox Code Playgroud)
以下是扩展的实体之一的代码示例BaseEntity:
@Entity
@Table(name = "ccd")
public class …Run Code Online (Sandbox Code Playgroud)