如何告诉JPA首选的DataType

Mar*_*enz 16 java database types jpa eclipselink

如果我使用JPA(EclipseLink)创建表,则String类型会生成varchar2(255).我怎么能告诉JPA(通过Annotation)创建一个varchar2(20)属性.

如果我有一个List JPA创建一个BLOB(4000)但我想要一个varchar2(我的序列化对象的字符串很短)

这怎么可能?我必须手工完成吗?

Wil*_*iam 29

您需要使用@Column批注的columnDefinition属性.即

@Column(columnDefinition="varchar2(20)")
Run Code Online (Sandbox Code Playgroud)

  • -1 作为@Pascals 下面的答案更好。它避免了由于在代码中显式引用数据类型而导致的兼容性问题。 (2认同)

Pas*_*ent 21

如果我使用JPA(EclipseLink)创建表,则String类型会生成varchar2(255).我怎么能告诉JPA(通过Annotation)创建一个varchar2(20)属性.

使用columnDefinitioncan可以从一个数据库中断到另一个数据库.对于字符串值列,首选使用length元素(默认为255):

@Column(length=20)
String someString;
Run Code Online (Sandbox Code Playgroud)

  • +1表示与columnDefinition相关的可移植性问题. (2认同)
  • 我想你可以改进你的答案,告诉我们数值的属性. (2认同)

Ste*_*tez 5

你可以设置length你的@Column注释,因为这样的:

@Column(length = 20)
Run Code Online (Sandbox Code Playgroud)

请注意,长度仅适用于文本列.对于数字,您可以使用precisionscale.