我可以修改JPA中的id类型,从“int”到“long”,而不会影响DB中已存在的表中的数据

时间:2018-06-12 07:19:44

标签: java hibernate jpa

我正在使用JPA进行数据库连接,我有一个类ABC.java并将表格表示为ABC,在ABC类中我有一个ID: -

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;

现在我想将其转换为: -

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;

我可以修改JPA中的ID类型,从intlong,而不会影响数据库中已存在的表中的数据。该表的Id字段为Number(10)

我想做的所有修改是什么?

1 个答案:

答案 0 :(得分:0)

可以使用attribute converter注释更改属性的类型。在您的情况下,这意味着延长AttributeConverter<Long, Integer>并将{convert}用于id字段:

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Convert(converter = LongToIntConverter.class)
private long id;

但是,如果long id的值超出可用int值的范围(2^31 + 1),则会引发异常。

为了确保永远不会发生这种情况,您必须确保将id生成限制为此限制。

编辑:只是问一下,为什么要将id转换为long但保持数据库架构相同?我无法看到两者兼顾的优势。