如何找出JPA @Entity中列的长度?

我已经定义了一个String列

@Column(length = 4000) 

该属性包含日志信息,可能长于定义的长度。 在这种情况下,可以安全地截断该字段而不抛出错误消息。

我想在poo的DAO类中找出确定的列长度,以便在必要时可以截断字符串。 我怎样才能做到这一点?

问候,

克里斯

查看EJB对此问题的回答 ;

如何在表单,validation和ddl中重用字段长度?

换句话说,如果您想要人员表中firstName列的长度,则使用此代码。

 person.getClass().getDeclaredField("firstName").getAnnotation(Column.class).length() 

嗯,最简单的方法是使用带注释的reflection 。 在性能方面,我不会便宜。

实现这一目标的一种便宜而简单的方法是在实体类中使用长度常量。 如果您认为列大小恰好是您实体中的常量,我认为这应该是正确的方法

 public static final short FIELD_LENGTH = 255; @Column(name="FIELD", length = FIELD_LENGTH) private String field; 

使用reflection将是一个明显的答案。

你在使用Hibernate吗? 如果是这样,那么Hibernate Validator应该为您validation长度并提供合适的错误消息。