在spring创建的中间表中插入数据

时间:2016-11-08 22:16:27

标签: spring jpa

我使用带JPA的spring,我有2个模型类

  1. 用户
  2. 资源
  3. 我使用 -

    定义了多对多的关系
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "users_resources", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "resource_id", referencedColumnName = "id"))
    

    此定义创建了另一个表users_resources。

    要在users_resources表中插入数据,REST api只发送用户ID [主键]和资源ID [主键]。

    无论如何,我可以在不获取完整用户对象和资源对象的情况下将数据插入users_resources吗?我想使用本机查询,但似乎PersistenceJPAConfig现在可以运行本机INSERT查询。

1 个答案:

答案 0 :(得分:2)

如果您知道对象的Id,并且需要对象引用(没有对象详细信息),则可以使用EntityManager.getReference()

User userReference=em.getReference(User.class,userId);
Resource resourceReference=em.getReference(Resource.class,resourceId);

使用引用不会从数据库中提取任何SELECT。