kvi*_*tso 10 java jpa ebean playframework-2.0
我在我的实体中映射字符串和枚举的集合时遇到问题.我遵循了不同的建议,但似乎没有任何效果.我正在使用PlayFramework 2.0和提供的Ebean作为ORM.
这是一个插图类:
package models;
import java.util.*;
import javax.persistence.*;
import play.db.ebean.Model;
@Entity
@Table(name = "foo")
public class Foo extends Model {
private static final long serialVersionUID = 1L;
private enum FooBar {
FOO, BAR;
}
@Id
public Long id;
@ElementCollection
@Enumerated(EnumType.STRING)
@CollectionTable(name = "bar_foobar",
joinColumns = @JoinColumn(name = "bar_id",
referencedColumnName = "id"))
@Column(name = "foobar")
public List<FooBar> fooBars;
@ElementCollection(targetClass = String.class)
@CollectionTable(name = "bar_strings",
joinColumns = @JoinColumn(name = "bar_id"))
@Column(name = "string", nullable = false)
public List<String> listOfStrings;
@Basic
public List<String> listOfStrings2;
// Attempt to circumvent the issue, but this gives a strange error
//public String[] arrayOfString;
}
Run Code Online (Sandbox Code Playgroud)
应用程序启动时生成的DDL如下所示:
create table foo (
id bigint not null,
constraint pk_foo primary key (id))
;
Run Code Online (Sandbox Code Playgroud)
我希望看到这两个表bar_foobar和bar_strings创建,如果注释是正确的.
如果使用arrayOfString变量,我会在应用程序启动时收到一条错误的错误消息(与一个随机实体相关,不一定是Foo.class
PersistenceException:[models.user.User]出错它没有被增强但是它的superClass [class play.db.ebean.Model]是?(不允许在单个继承层次结构中混合增强)标记[play.db.ebean.Model] className [models.user.User]
我知道我可以将我的字符串和枚举包装在实体中,并使用@ManyToMany关系,但想到它会让我颤抖.Play 2.0或Ebean中是否存在错误(使用v2.7.3)?还有其他方法可以解决我的问题吗?
| 归档时间: |
|
| 查看次数: |
4860 次 |
| 最近记录: |