嵌入式对象Spring JPA上的删除操作
我有以下实体:嵌入式对象Spring JPA上的删除操作,spring,jpa,spring-data,spring-data-jpa,Spring,Jpa,Spring Data,Spring Data Jpa,我有以下实体: @Entity(name = "USRGRP_MAP") public class UserGroupMapping { @Id @Column(name = "USRGRP_ID") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_GRP_MAP_SEQ") @SequenceGenerator(sequenceName = "usrgrp_map_s
@Entity(name = "USRGRP_MAP")
public class UserGroupMapping {
@Id
@Column(name = "USRGRP_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_GRP_MAP_SEQ")
@SequenceGenerator(sequenceName = "usrgrp_map_seq",allocationSize = 1,name = "USER_GRP_MAP_SEQ")
private Long mappingId;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID")
private User user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "USR_GRP_ID", referencedColumnName = "USR_GRP_ID")
private UserGroup group;
@Column(name = "USR_USRGRP_ACT")
private String userGroupAct;
getter/setters
}
@Entity(name = "USER")
public class User {
@Id
@Column(name = "USER_ID")
private Long userId;
@Column(name = "LOGIN_ID")
private String userName;
getter/setters
}
@Entity(name = "USR_GRP")
public class UserGroup {
@Id
@Column(name = "USR_GRP_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_GRP_SEQ")
@SequenceGenerator(sequenceName = "usr_grp_seq",allocationSize = 1,name = "USER_GRP_SEQ")
private long groupId;
@Column(name = "GRP_NM")
private String groupName;
@Column(name = "GRP_DESC")
private String groupDesc;
getter/setters
}
UserGroupMapping包含与用户和组的多对一关系。
现在,我想对已创建的存储库的UserGroupMapping执行CRUD操作,如下所示:
public interface UserGroupMappingRepository extends JpaRepository<UserGroupMapping, Long> {
List<UserGroupMapping> findByGroup(UserGroup group);
List<UserGroupMapping> findByUser(User user);
}
尽管查询在SQL开发人员中可以正常工作,但遇到异常时SQL语法无效
以下是我的服务级别:
@Service
public class UserGroupMappingServiceImpl implements UserGroupMappingService{
@Autowired
private UserGroupMappingRepository repository;
@Override
public void deleteUserGroupMapping(Long userId, Long groupId) {
repository.deleteUserGroupMappingByUserAndGroup(userId,groupId);
}
}
有人能建议正确的方法从UserGroupMapping中删除条目而不删除用户和组吗
以下是USRGRP_地图表:
USRGRP_ID USER_ID USR_USRGRP_ID USR_USRGRP_ACT
------------- ---------- ------------- -
41 306106 41 Y
14 108527 14 Y
8 295597 8 N
10 296518 10 Y
11 295597 11 Y
提前感谢。尝试更改
@查询(value=“从USR\U USRGRP\U映射中删除,其中用户id=:userId和USR\U grp\U id=:groupId”,nativeQuery=true)
void deleteUserGroupMappingByUserAndGroup(@Param(“userId”)Long userId,@Param(“groupId”)Long groupId)
为此:
@修改
@查询(value=“从USR\U USRGRP\U映射中删除,其中用户id=:userId和USR\U grp\U id=:groupId”,nativeQuery=true)
void deleteUserGroupMappingByUserAndGroup(@Param(“userId”)Long userId,@Param(“groupId”)Long groupId)
干杯
~Emil添加@modify会产生以下异常:“异常”:“org.springframework.dao.InvalidDataAccessApiUsageException”,“消息”:“执行更新/删除查询;嵌套异常为javax.persistence.TransactionRequiredException:执行更新/删除查询”,请提供完整的堆栈跟踪
USRGRP_ID USER_ID USR_USRGRP_ID USR_USRGRP_ACT
------------- ---------- ------------- -
41 306106 41 Y
14 108527 14 Y
8 295597 8 N
10 296518 10 Y
11 295597 11 Y