Oracle的TopLink实现JPA 动态创建表

本文探讨了在Oracle 10G XE数据库中,EclipseLink(TopLink)和Hibernate在JPA实现中创建表时,对于@Column注解中length属性的不同处理方式。EclipseLink似乎以字节而非字符为单位,导致与Java String长度不匹配。通过示例展示了两者差异,并提出使用columnDefinition属性来精确控制字段类型以解决此问题。
摘要由CSDN通过智能技术生成
length   可选
默认值: 255

默认情况下,JPA 持续性提供程序假设所有列在用于保存 String 值时的最大长度为 255 个字符。

如果该列不适合于您的应用程序或数据库,请将 length 设置为适合于您的数据库列的 int 值。

TopLink中的实现好像并非以字符为单位,若length为255,TopLink在数据库的映射貌似是255个字节,并非Java里面String类型的255个字符。

不多说了,下面还是看看例子吧,这里的数据库为Oracle 10G XE。


实体类UserEO

package edu.dlut.entity;

import javax.persistence.*;

@Entity
@Table(name="t_user")
public class UserEO {
	private int id;
	private String name;
	
	@Id
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}

	@Column(length=3)
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public UserEO() { }
}

如果在persistence.xml中加上这样一条

<property name="to
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值