如何使用JPA映射java.net.URL列表?

时间:2016-01-17 00:57:28

标签: java spring hibernate jpa

我试试:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
protected List<URL> urlList;

但我得到错误:

org.springframework.beans.factory.BeanCreationException: Error creating
 bean with name 'entityManagerFactory' defined in ServletContext resource
 [/WEB-INF/servlet-context.xml]: Invocation of init method failed; nested
 exception is org.hibernate.AnnotationException: Use of @OneToMany or
 @ManyToMany targeting an unmapped class:
 my.package.MyModel.urlList[java.net.URL]

我看到了this个答案,但我无法映射网址列表。

2 个答案:

答案 0 :(得分:0)

使用if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ) { CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptThirdPartyCookies( webView, true ); } ElementCollection是映射非ENTITY元素集合的方法。

CollectionTable

然后,它将取决于您的JPA提供程序是否支持开箱即用的元素类型(@ElementCollection @CollectionTable(name="MY_URLS") Collection<URL> urlList; )的持久性。我的提供商(DataNucleus)。如果没有<{1}},您始终可以使用URL

答案 1 :(得分:-1)

您使用的是什么版本的Hibernate?此外,在您的数据库中,列的数据类型是什么;是varchar,还是别的什么?

从我的理解,看起来你的问题是Hibernate不知道如何将数据库中的列转换为java.net.URL类,需要定义一个Hibernate类型来告诉Hibernate如何处理这种转换。

看起来Hibernate确实有一个应该处理这种转换的内置类型,假设您正在使用Hibernate的版本 - 我认为3.6或更高版本。

尝试将此注释添加到列表中:

@Type(type="org.hibernate.type.UrlType")

如果你的Hibernate版本没有org.hibernate.type.UrlType,或者你的数据库列数据类型不是varchar,你需要创建一个自定义的Hibernate类型来定义Hibernate转换任何数据需要做什么在数据库中输入java.net.URL并返回。如果它达到了这一点,请告诉我们,我们可以为您提供更多信息。