GenerationType.TABLE : 数据库中的大数字



>我有一个名为Log的接口和两个子类DescriptiveLogTraceabilityLog所以我想为每个子类创建表。我的界面是这样的:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Log implements Serializable {

    @Id
    @GeneratedValue(strategy= GenerationType.TABLE)
    private Long id;
    private Date date;
    private String actor;
    ...
}

和我的子类:

@Entity
public class DescriptiveLog extends Log {
    private String description;
    ...
}
@Entity
public class TraceabilityLog extends Log {
    @OneToMany(mappedBy="traceabilityLog")
    private Collection<TraceabilityLogItem> traceabilityLogItems;
}

一个数据库我有一个名为hibernate_sequence另一个表,一个属性日志当我保存可追溯性或描述性日志时,我在数据库中看到它们的 ID 中出现类似 24535 的值所以我想把它们分开。

在我看来,如果您想使用表策略为表生成 ID,则需要为 JPA 提供程序(在您的情况下为休眠(提供更多信息。

假设您的hibernate_sequence表具有保存主列名和保存下一个可用 id 的seq_val seq_name,那么您的映射应该是这样的:

@TableGenerator(name = "LogGen", table = "hibernate_sequence",
                pkColumnName = "seq_name", valueColumnName = "seq_val", allocationSize = 1)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "LogGen")
private Long id;

如果刚刚创建了日志表,则可以将日志表的seq_val设置为 1。

最新更新