2017-09-01 15 views
0

上の操作を削除し、私はエンティティの下に持っている:埋め込みオブジェクトの春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(

+0

@Modifyingは例外の下に与え追加 –

答えて

1

てみ @queryを変更するには"groupId")長いgroupId);これに

@queryを@Modifying

(値= "USR_USRGRP_MAPから削除どこのuser_id =:ユーザーIDとusr_grp_id =:groupIdを"、nativeQuery =真) 無効deleteUserGroupMappingByUserAndGroup(@Param ( "userId")長いuserId、@Param( "groupId")長いgroupId);

乾杯

〜エミール

+0

完全なスタックトレースを提供してください: "例外": "org.springframework.dao.InvalidDataAccessApiUsageException"、 "メッセージ":「実行を更新/削除クエリ;ネストされた例外はjavax.persistence.TransactionRequiredException:更新/削除クエリの実行 "、 – Abhij

+0

クエリを使用するコードを貼り付けてください – vRaptor

関連する問題