我有一个实体类
@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类作为参数传递,还是应该执行连接?
您的查询不正确。
这个
i.invitedBy =:user
必须
invite.invitedBy =:user