In my project I try yo use Spring data Jpa. My find methods(findById, findAll) works correctly, but delete and save method works with problems. Delete method delete only from duck table. Save doesn't work:
Exception in thread "main" org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find springdata.entities.FrogJpa with id 2; nested exception is javax.persistence.EntityNotFoundException: Unable to find springdata.entities.FrogJpa with id 2
I have 2 entities: Frog and Duck. Every ducks have 1 Frog(OneToOne). There are problems with entities relationship?
There are my entities class:
@Entity
@Table(name = "DUCKS")
public class DuckJpa implements Serializable {
    @Id
    private int id;
    @Column(name = "NAME")
    private String name;
    @Column(name = "FLY")
    private String flyBehavior;
    @Column(name = "QUACK")
    private String quackBehavior;
    @OneToOne(optional = false)
    @JoinColumn(name = "FROG_ID", unique = true, nullable = false, updatable = false)
    private FrogJpa frogJpa;
    public void setId(int id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setFlyBehavior(String flyBehavior) {
        this.flyBehavior = flyBehavior;
    }
    public void setQuackBehavior(String quackBehavior) {
        this.quackBehavior = quackBehavior;
    }
    public void setFrogJpa(FrogJpa frogJpa) {
        this.frogJpa = frogJpa;
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public String getFlyBehavior() {
        return flyBehavior;
    }
    public String getQuackBehavior() {
        return quackBehavior;
    }
    public FrogJpa getFrogJpa() {
        return frogJpa;
    }
And Frog:
@Entity
@Table(name = "FROGS")
public class FrogJpa {
    @OneToOne(optional = false, mappedBy = "frogJpa")
    private DuckJpa duckJpa;
    @Id
    private int id;
    @Column(name = "name")
    private String name;
    public void setId(int id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setDuckJpa(DuckJpa duckJpa) {
        this.duckJpa = duckJpa;
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public DuckJpa getDuckJpa() {
        return duckJpa;
    }
}
My service class:
public interface DuckService {
    List<DuckJpa> findAll();
    Optional<DuckJpa> findById(Integer i);
    DuckJpa save(DuckJpa duckJpa);    
    void delete(DuckJpa duckJpa);
}
And it's implementation:
@Service("springJpaDuckService")
@Transactional
public class DuckServiceImpl implements DuckService {
    @Autowired
    private DuckJpaRepository duckJpaRepository;
    @Transactional(readOnly = true)
    public List<DuckJpa> findAll() {
        return new ArrayList<>(duckJpaRepository.findAll());
    }
    @Override
    public Optional<DuckJpa> findById(Integer i) {
        return duckJpaRepository.findById(i);
    }
    @Override
    public DuckJpa save(DuckJpa duckJpa) {
        duckJpaRepository.save(duckJpa);
        return duckJpa;
    }
    @Override
    public void delete(DuckJpa duckJpa) {
        duckJpaRepository.delete(duckJpa);
    }