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

时间:2009-03-23 15:56:59

标签: java jpa

我有一个用

定义的String列
@Column(length = 4000)

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

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

此致

克里斯

4 个答案:

答案 0 :(得分:6)

查看EJB answer这个问题;

  

How to reuse fieldlength in form, validation and ddl ?

要解释一下,如果你想要人员表中firstName列的长度,你可以使用这段代码。

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

答案 1 :(得分:1)

嗯,最简单的方法是使用reflection和注释。不过,就性能而言,我不会便宜。

答案 2 :(得分:1)

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

,我认为它应该是正确的方法

实施例

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

答案 3 :(得分:0)

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

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