我有一个Student
实体,另一个实体@ManyToOne
是School
,其中School
在数据库中已预先存在并已固定。
实体User
:
@Data
@Entity(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private String username;
@ManyToOne
private School school;
}
实体
School
:@Data
@Entity(name = "school")
public class School {
@Id
@Column(unique = true, nullable = false)
private int id;
@Column(nullable = false)
private String name;
private String shorten;
@JsonProperty(value = "logo_url")
private String logoUrl;
private float longitude;
private float latitude;
@Column(nullable = false)
private boolean opened;
}
添加用户时,我从Postman发布以下json:
{
"username": "abcd",
"school_id": 2
}
然后,
School school = new School();
school.setId(2); //"school_id" above
User user = new User();
user.setUsername("abcd");
user.setSchool(school);
userRepository.save(user);
因为我认为要添加新的
user
,仅School
id
就足够了,并且不需要其他School
参数。但是每次运行时,它都会运行select
语句,以在School
之前按id
选择save()
的所有字段。我的问题是:如何删除此不必要的操作,以便在
save()
之前无需select
? (我知道可以实现自定义sql语句,但是我觉得这样会破坏JPA的面向对象) 最佳答案
在实体类上使用以下注释
@SelectBeforeUpdate(value=false)