我正在使用JPA进行数据库连接,我有一个类ABC.java
并将表格表示为ABC
,在ABC类中我有一个ID: -
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
现在我想将其转换为: -
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
我可以修改JPA中的ID类型,从int
到long
,而不会影响数据库中已存在的表中的数据。该表的Id字段为Number(10)
。
我想做的所有修改是什么?
答案 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
但保持数据库架构相同?我无法看到两者兼顾的优势。