如何在不更改数据库架构的情况下将UrlType从Hibernate 3.6迁移到4.3?

时间:2015-06-30 17:34:29

标签: java hibernate jpa h2

我正在将一些代码从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

1 个答案:

答案 0 :(得分:0)

回答我自己的问题 - 这似乎有效:

@Entity
public class SomeClass {

    @Lob
    @Column(columnDefinition = "binary(255)")
    private java.net.URL myURL;

    ...
}

其他信息:使用URL类型的属性作为持久属性是一个坏主意,因为url.equals(otherUrl)调用Java URLStreamHandler尝试解析URL,即DNS查找发生。如果您的连接速度很慢,这会导致您的性能下降,因为您必须等待呼叫成功或超时......