【发布时间】:2016-11-27 14:38:19
【问题描述】:
我有一个用户实体:
@Entity
@Table
class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column
private Integer value;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "user")
private UserDetails userDetails = new UserDetails(this);
// getters, setters
}
UserDetails 实体:
@Entity
@Table(name = "user_details")
class UserDetails {
@GenericGenerator(name = "generator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "user"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "user_id", unique = true, nullable = false)
private Integer id;
@Column
private String name;
@OneToOne
@PrimaryKeyJoinColumn
private User user;
public UserDetails(User user) {
setUser(user);
}
//getters, setters
}
我有一个 UserRepository
public interface UserRepository extends JpaRepository<User, Integer> {
@Transactional
@Modifying
@Query("update User set value = ?2 where userDetails.name = ?1")
Integer addValue(String name, int value);
}
方法 addValue 给出下一个错误:
引起:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的'set value=1000 where name='John'' 附近
我尝试将名称从 UserDetails 移动到 User 并且它有效,但我必须将其保留在 UserDetails 中。错误在哪里?
【问题讨论】:
标签: spring hibernate spring-data spring-data-jpa jpql