Mam problemy z odwzorowaniem kolekcji ciągów i wyliczeń w moich jednostkach. Śledziłem różne porady, ale nic nie działa. Używam PlayFramework 2.0 i dostarczonego Ebean jako ORM.Mapowanie kolekcji ciągów i enumów z Ebean (Play 2.0)
Oto klasa ilustracji:
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;
}
Wygenerowany DDL po uruchomieniu aplikacji wygląda następująco:
create table foo (
id bigint not null,
constraint pk_foo primary key (id))
;
Spodziewam się, aby zobaczyć oba stoły bar_foobar
i bar_strings
tworzone, jeśli adnotacje były poprawne.
Jeśli użyciu zmiennej arrayOfString
, dostaję weired Komunikat błędu po uruchomieniu aplikacji (który dotyczył losowej podmiot, niekoniecznie Foo.class
PersistenceException: Błąd z [models.user.User] Nie został ulepszony, ale jest to superClass [klasa play.db.ebean.Model] to? (Nie można mieszać ulepszeń w jednej hierarchii dziedziczenia) znacznik [play.db.ebean.Model] className [modele .user.User]
Wiem, że mogłem owijać moje Struny i Enumy w byty i używać relacji @ManyToMany, ale myśl o tym sprawia, że drżę. Czy jest tu błąd w Play 2.0 lub Ebean (używając v2.7.3)? Czy są inne sposoby na rozwiązanie mojego problemu?
Dziękuję za odpowiedź. To dotyczy wyjątku PersistenceException, prawda? Naprawdę próbowałem aktualizacji do wersji 2.0.1 i otrzymałem ten sam wyjątek po tym. Ale może muszę zbudować projekt od zera 2.0.1, aby to rozwiązać? Moje główne pytanie dotyczyło mapowania String/Enum, przepraszam za dodanie drugiego pytania do postu. – kvitso