繁体   English   中英

Spring Data JPA多对多保存设置

[英]Spring Data JPA Many to Many save to set

我有一个问题,我有一个多对多关系,我想从集合中添加或删除项目。 *

@Entity
@DiscriminatorValue("P")
public class Patient extends User{
    private String firstName;
    private String lastName;
    @Embedded
    private Address address;

    @ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @JoinTable(name="PatientOrganisation", joinColumns = {@JoinColumn(name="patientId")}, inverseJoinColumns = {@JoinColumn(name="organisationId")})
    private Set<Organisation> organisations = new HashSet<Organisation>();
}

*

@Entity
@DiscriminatorValue("O")
public class Organisation extends User{

    @Column(name="organisationName")
    private String name;

    @ManyToMany(mappedBy="organisations", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    private Set<Patient> patients = new HashSet<Patient>();
    }

这是我的两个实体。

现在我试图写一个这样的自定义保存方法

公共接口OrganisationRepository扩展

PagingAndSortingRepository<Organisation, Long>{

    @Query (value="insert into patient_organisation(patient_id, organisation_id) values ([?1], [?2])", nativeQuery=true)
    Organisation addPatient(Long patientId, Long organisationId);
}

但这没用,我得到这个错误。

无法使用executeQuery()发出数据操作语句。

有没有更聪明的方法可以执行此操作,或者有人可以帮助我解决该错误。

谢谢克里斯

我不太确定为什么您决定为此编写本机查询,我会让ORM仅仅通过将用户添加到组织的一组用户中来将记录添加到很多对许多人中:

@Service
@Transactional
public class OrganisationDataService {
    @Autowired
    CrudRepository<Organisation, Long> organisations;

    @Autowired
    CrudRepository<User, Long> users;

    public void addUserToOrganisation(Long patientId, Long organisationId) {
        Organisation organisation = organisations.findOne(organisationId);
        User user = users.findOne(patientId);
        organisation.getPatients().add(user);
        organisations.save(organisation);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM