我正在将一些代码从Hibernate v3.4迁移到v4.3.10。作为数据库,我使用H2。
生成DDL时,Hibernate 3.4会将名为java.net.URL
的{{1}}字段转换为:
myUrl
现在,当使用Hibernate 4.3.10时,完全相同的Java代码被"翻译"成
myUrl BINARY(255),
通过文档看来,Hibernate 3.6似乎引入了一种新的类型概念("类型注册表"),具体而言myUrl VARCHAR(255),
未映射到java.net.URL
,而是映射到binary
},它解释了上面生成的不同DDL。
如何在不更改数据库的情况下将3.4代码迁移到4.3.10。即,我希望能够使用Hibernate 4.3.10带注释的代码读取旧数据库。
有问题的代码目前很简单:
varchar
答案 0 :(得分:0)
回答我自己的问题 - 这似乎有效:
@Entity
public class SomeClass {
@Lob
@Column(columnDefinition = "binary(255)")
private java.net.URL myURL;
...
}
其他信息:使用URL
类型的属性作为持久属性是一个坏主意,因为url.equals(otherUrl)
调用Java URLStreamHandler
尝试解析URL,即DNS查找发生。如果您的连接速度很慢,这会导致您的性能下降,因为您必须等待呼叫成功或超时......