Play框架2.1.1版本,@ElementCollection在演化中未生成。

3

我有一个简单的模型,就像这样:

@Entity
public class Album extends Model {
    @Id
    public Long id;
    public String name;

    @ElementCollection
    public Set<String> urls = new HashSet<>();

    // ...
}

当我在一个新的数据库上运行这个应用程序时,会生成一个演进文件,但是这个演进文件没有包含任何关于URL集合的内容。它看起来像这样:
# --- Created by Ebean DDL
# To stop Ebean DDL generation, remove this comment and start using Evolutions

# --- !Ups

create table album (
  id                        bigint not null,
  name                      varchar(255),
  constraint pk_album primary key (id))
;

create sequence album_seq;

我错过了什么?我应该用不同的方式建立这种关系吗?

编辑:我通过添加一个Url实体并将@ManyToOne映射回Album来解决这个问题,但那并不是很好的解决方法...

1个回答

3

看起来EBean不支持@ElementCollection。

一种解决方案是将您的URL集合声明为@Transient(即未持久化),并编写方法来管理它,同时保持一个简单的字符串,其中包含逗号分隔的标记。这个字符串会在单列中被持久化。


谢谢eskatos。我应该回来看看这个,这是EBean中的功能请求(来自2012年):http://www.avaje.org/bugdetail-378.html。最终,我存储了更多的详细信息以及URL,所以我的ManyToOne解决方法对我有用,但我仍会为您投票 :) - rjohnston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接