当前位置: 首页 > 知识库问答 >
问题:

JPA:如何在save()之前删除不必要的SELECT?

沈飞翔
2023-03-14

我有一个实体student,它是@manytoone和另一个实体school,其中school预先存在于数据库中,并且是固定的。

实体用户:

@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;
}
@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;
}
{
    "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);

因为我认为要添加新的用户,只需要schoolID就足够了,不需要其他school参数。但是每次运行时,它都会运行select语句,在save()之前选择schoolbyid的所有字段。

我的问题是:如何删除这个不必要的操作,以便在save()之前不需要select?(我知道可以实现自定义sql语句,但我觉得这样会破坏JPA的面向对象

共有1个答案

禄和宜
2023-03-14

在实体类上使用下面的注释

@SelectBeforeUpdate(value=false)
 类似资料:
  • 如何删除git记录(不影响代码) 如图所示,本地在提交bug fix时发现落后远程, 这个时候使用pull后多了一条merge记录 问题:希望删除本地merge远程的这条记录,影响代码 ps: 尝试过 get rebase -i head~n 但是没有看到这个记录

  • 我们正在针对现有数据库编写一个新的应用程序。我正在使用Spring数据JPA,只需做一个 在我的新实体上,使用 我在日志中注意到,hibernate在插入之前进行了一次选择,而且这需要很长时间,即使在使用索引时也是如此。 我在这里搜索过这个,我找到的答案通常与冬眠有关。我对JPA很陌生,JPA和Hibernate似乎是紧密结合在一起的,至少在Spring数据环境中使用它时是这样。链接的答案建议使用

  • 本文向大家介绍WordPress删除不必要的meta标签,包括了WordPress删除不必要的meta标签的使用技巧和注意事项,需要的朋友参考一下 WordPress默认情况下引用系统 wp_head() 获得很多的 meta 标签,其中有一些不太必要,所以我们可以通过 add_filter 和 remove_action 删除这些标签。 打开主题下的 functions.php 文件,加入下面的

  • candref.java grpMember.java member.java 提前道谢。

  • 问题内容: 我想使用一个开关在网页上放置段落标签。 我使用after伪元素: 现在,我需要从页面中删除此CSS代码。 如何轻松做到这一点? 我要补充一点: jQuery已在页面上使用 而且我不想包含或删除包含CSS的文件。 问题答案: p:after { content: none; } none 是将内容(如果指定)设置为 空 的官方值。

  • 是否可以使用Intellij IDEA中的代码格式删除空行/空行?