我正在尝试使用一个项目执行更新:- Jdk 11 - Springboot 2.2.3 - Mysql 8.0.18
这是我的查询(在存储库中):
@Transactional
@Modifying
@Query("UPDATE VC SET bulkId = :bulkId WHERE vId = :vId AND user.ttt=:TTT")
void updateBulkId(String bulkId, String vId, String TTT);这是我的VC模型:
@Entity
@Table
@Getter @Setter
public class VC
{
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name="user_fk", referencedColumnName = "id")
private User user;
@Column(nullable = false)
private String bulkId;
private String vId;
}这是我的用户模型:
@Entity
@Table
@Getter @Setter
public class User
{
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String ttt;
}这是我得到的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set bulkId='123ABC' where vId='1' and ttt='123'' at line 1我认为由于某种原因,JPA无法连接两个表(VC和User)。
谢谢你的帮助
发布于 2020-01-30 19:19:00
您可以尝试使用子查询:
@Query("UPDATE VC SET bulkId = :bulkId WHERE vId = :vId
AND user.id in (
select u.id
from User u
where u.ttt=:TTT"
)
)发布于 2020-01-30 00:50:27
更新-使用连接
您的JPQL中有一个错误。如下所示引用相关实体,添加@Param
@Transactional
@Modifying
@Query("UPDATE VC vc JOIN vc.user u SET vc.bulkId = :bulkId WHERE vc.vId = :vId AND u.ttt=:TTT")
void updateBulkId(@Param("bulkId")String bulkId, @Param("vId")String vId, @Param("TTT")String TTT);https://stackoverflow.com/questions/59971730
复制相似问题