上の操作を削除し、私はエンティティの下に持っている:埋め込みオブジェクトの春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_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は、ユーザーとグループの両方を持つ1人の関係に多くを持っている含まれています。 は、今私は、私は以下のようにリポジトリを作成して、そのためにUserGroupMapping上でCRUD操作をしたい:
public interface UserGroupMappingRepository extends JpaRepository<UserGroupMapping, Long> {
List<UserGroupMapping> findByGroup(UserGroup group);
List<UserGroupMapping> findByUser(User user);
}
を今私はUSERとUSR_GRPで任意のエントリを削除せずにUserGroupMappingに(特定のユーザーおよびグループ用)の操作を削除書きたいですテーブル、USRGRP_MAPテーブルからエントリを削除するだけです。
私はネイティブクエリを使用してそれを達成しようとしています:例外無効なSQL文法に直面
@Query(value = "delete from USR_USRGRP_MAP where user_id = :userId and usr_grp_id = :groupId",nativeQuery = true)
void deleteUserGroupMappingByUserAndGroup(@Param("userId") Long userId, @Param("groupId") Long groupId);
、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_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
ありがとう:
は以下USRGRP_MAPテーブルです。 ( ":useridとusr_grp_id =:groupIdをUSR_USRGRP_MAPから削除のuser_id ="、nativeQuery =真値=) 無効deleteUserGroupMappingByUserAndGroup(@Param( "userIdを")ロングのuserId、@Param(
@Modifyingは例外の下に与え追加 –