更新

2017-12-29 22 views
0

私は、更新クエリを実行することができませんエンティティクラスに更新

@Data 
@Entity 
@Table("invite_data") 
public class InvitationData { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "rl_id") 
private Long id; 

@Column(name = "rl_invitee_email") 
private String inviteeEmailId; 

@Column(name = "rl_generated_link") 
private String generatedLink; 

@Column(name = "rl_expire_at") 
private Calendar expiresAt; 

@Column(name = "rl_generated_code") 
private String generatedCode; 

@Column(name = "rl_created_at") 
private Calendar invitedAt; 

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "rl_frn_created_by", referencedColumnName = "u_id") 
private UserModel invitedBy; 

@Column(name = "rl_is_active") 
private Boolean isActive; 

@Column(name = "rl_is_used") 
private Boolean isUsed; 

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "rl_frn_invited_role", referencedColumnName = "as_id") 
private AccountStatus invitedRole; 
} 

を持っています。

public interface InvitationRepository extends JpaRepository<InvitationData, Long> { 

@Modifying(clearAutomatically = true) 
@Query("UPDATE InvitationData invite SET invite.isActive = false WHERE invite.id= :invitationId AND invite.isUsed = false AND" 
     + " invite.isActive = true AND invite.expiresAt >=:now AND i.invitedBy =:user") 
Integer cancelInvitation(@Param("invitationId") Long id, @Param("now") Calendar now, 
     @Param("user") UserModel user); 

}

アプリケーションが問題になる可能性がありますどのような例外

java.lang.IllegalArgumentException: 
org.hibernate.hql.internal.ast.QuerySyntaxException: **Invalid path:** 
'i.invitedBy' [UPDATE com.highpeak.tlp.datastore.model.InvitationData 
invite SET invite.isActive = false WHERE invite.id= :invitationId AND 
invite.isUsed = false AND invite.isActive = true AND invite.expiresAt 
>=:now AND i.invitedBy =:user] 

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: 
**Invalid path:** 'i.invitedBy' [UPDATE 
com.highpeak.tlp.datastore.model.InvitationData invite SET 
invite.isActive = false WHERE invite.id= :invitationId AND 
invite.isUsed = false AND invite.isActive = true AND invite.expiresAt 
>=:now AND i.invitedBy =:user] 

と/ブートの起動に失敗しますか? Entityクラスに外部キーがある場合は、直接Entityクラスを引数として渡すことができますか、または結合を実行する必要がありますか?

答えて

2

質問が正しくありません。

この

i.invitedBy =:user 

invite.invitedBy =:user 
+0

は、私は、このような愚かなミスを犯したと信じてすることはできませんなければなりません。助けてくれてありがとう。正しいことを確認せずに質問を投稿して申し訳ありません –