Hibernate JPA生成大量的oneToMany实体的sequence.nextval查询

时间:2019-04-03 20:57:17

标签: hibernate spring-boot jpa

我有一个父表和一个子表。父级可能包含许多子项。 每当我进行父级保存时,它都会为每个子项的序列生成生成许多select语句。
select ITEM_SEQ,nextval from dual

有什么办法可以避免这种情况。我正在寻找一个直截了当的声明,因为它不会通过提高性能来产生nextval一代。

@Entity
@Table(name="Bucket")
public class Bucket {
Long id;

@OneToMany(mappedBy = "bucket", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private Set<Item> items = new TreeSet<>();
.....
....
}



@Entity
@Table(name = "Item")
public class Item {



    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ItemGenerator")
    @SequenceGenerator(name = "ItemGenerator", sequenceName = "ITEM_SEQ", allocationSize = 1)
    @Column(name = "ITEM_SEQ")
    private Long id;
...
...
}

1 个答案:

答案 0 :(得分:1)

GenerationType.SEQUENCE需要额外的调用才能从数据库序列中获取新的ID。在大多数应用程序中这不是性能问题。如果您不希望发生这种情况,请改用GenerationType.IDENTITY