У меня есть веб-приложение jsf 2.x, в котором есть слои jpa данных hibernate / spring для транзакции базы данных.
У меня есть Foo
сущность java, которая как Bar
имеет свойство OneToOne
отношения.
@Entity
@Table(name="FOO")
public class Foo {
@Id
@Column(name="FOO_ID", nullable=false)
private UUID fooId;
@OneToOne
private Bar bar;
}
Обе сущности имеют свою собственную таблицу в БД.Таблица Bar
имеет первичный ключ bar_id
и внешний ключ foo_id
.Я попытался удалить запись из таблицы Bar
для определенного условия, используя пользовательский репозиторий, расширяющий JpaRepository из данных весны jpa.
Я выполнил следующее утверждение и подумал, что он должен выполнить свою работу.
this.barRepository.delete(foo.getBarId());
Однако я столкнулся с java.lang.illegalargumentexception attempt to create merge event with null entity
.Я прочитал статью о том, что null
передается в качестве аргумента, но я подтвердил, что foo.getBarId()
не является нулевым через отладку.Я не уверен, что пошло не так и как это исправить.
[Обновить]
Извините.Я нашел свою ошибку.Для BarRepository
имеет неправильный тип объекта.
public interface BarRepository extends JpaRepository<Foo, UUID>
Это должно было быть:
public interface BarRepository extends JpaRepository<Bar, UUID>