У меня есть Entity1
и Entity2
. У них есть одноразовая связь OneToOne.Запрос отношения nullable @OneToOne с JPA
@Entity
class Entity1 {
@Id
@Column(name = "id")
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "entity2")
@JoinColumn(nullable = true)
private Entity2 entity2;
...
}
Как я могу запросить все Entity1
объекты, имеет нуль entity2
?
Потому что, если я делаю:
SELECT e FROM Entity1 e WHERE e.entity2 IS NULL
JPA двигатель сделать JOIN между двумя таблицами и положить бесполезную WHERE clausule (WHERE entity_id = NULL
). Возобновление, он выполняет бесполезный родной SQL. Как можно
Текущее решение:
Чтение документации OpenJPA, я обнаружил, что коренные запросы должны быть использованы для обхода ограничений JPA. Я могу сделать это очень легко, используя собственный запрос, и сейчас я это делаю, но я бы хотел избежать использования этого.
Можете ли вы дать более конкретные сведения о том, как эти Сущности связаны друг с другом? Вы используете метод связывания @ @ JoinColumn или 'mappedBy', или, возможно, это' @ PrimaryKeyJoinColumn'? – DuncanKinnear
Я добавил его в код. –