У меня серьезная проблема с реализацией JPA отношений OneToMany, и я ищу разумный обходной путь. Проблема в том, что JPA, похоже, запутался, читая аннотацию @OneToMany, и возвращает:
«Flea.dog» объявляет столбец, который не совместим с ожидаемым типом «blob».
Flea.dog - числовое поле. Проблема, кажется, известная ошибка:
https://issues.apache.org/jira/browse/OPENJPA-1481
Проблема создается следующим образом: у меня есть две сущности: Собака и Блоха, У Собаки много блох, представленных dog_id в таблице Блох. Эти сущности сопоставлены с таблицами с разными именами. Собака сопоставлена с Мадрой, а Блоха сопоставлена с фейтиди.
Таблицы следующие:
CREATE TABLE madra (dogid BIGINT, name varchar(255), PRIMARY KEY (dogid));
CREATE TABLE feithidi (fleaid BIGINT, dogid BIGINT, PRIMARY KEY (fleaid));
Я использую H2 для примера, хотя у меня была та же проблема с Oracle.
Существуют следующие сущности:
@Entity(name="feithidi")
Flea{
@Id
long fleaid;
@ManyToOne
@JoinColumn(name="dogid", insertable=false, updatable=false, nullable=true)
private Dog dog;
}
и
@Entity(name="madra")
Dog{
@Id
long dogid;
String name;
@OneToMany(mappedBy="dog")
private Set<Flea> fleas;
}
Полное исключение, которое мне возвращается:
(org.apache.openjpa.persistence.ArgumentException: «Flea.dog» объявляет столбец, который не совместим с ожидаемым типом «blob».
Если у кого-то есть обходной путь или я вижу очевидную ошибку с моей стороны, я был бы признателен за отзыв.