Car*_*eon 6 java annotations hibernate jpa entity-model
我有这个代码:
public class Item {
@Column(name = "serialNo", length = 12)
public String getSerialNo() {
return this.serialNo;
}
public void setSerialNo(String serialNo) {
this.serialNo = serialNo;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,数据库模式将列定义为长度为13.当通过以下方式检索项时:
List<Item> items = getEntityManager().createNamedQuery(SQL).getResultList();
Run Code Online (Sandbox Code Playgroud)
具有数据serialNo等于字符13(因为分贝表模式允许13)仍然被显示为13,不会被截断.@Column length当时有什么用?
acd*_*ior 10
所述javax.persistence.Column的length属性被用来定义的列的长度String字段(它被用于其他类型的被忽略),并仅使用时持久性框架将生成的数据库模式(几个CREATE TABLE从实体,如该选项或多个)(对于休眠上hibernate.cfg.xml):
<property name="hbm2ddl.auto">create</property>
Run Code Online (Sandbox Code Playgroud)
在您的示例中,该列serialNo将创建为VARCHAR(12).
出于所有其他目的(插入或检索数据),它将被忽略.
此外,如果要在类中"记录"数据库的元数据信息,这将非常有用.这样,您自己可以在尝试插入之前验证要保存的值,并避免任何"值太长"或"数据截断"的异常.
| 归档时间: |
|
| 查看次数: |
6287 次 |
| 最近记录: |