【发布时间】:2012-02-14 12:30:33
【问题描述】:
您好,我遇到了 JPA 速度慢的问题。使用 jps 映射队列模型、队列快照和事件。 这是我的实体:
@Entity
@Table(name = "cmEvent")
public class Event implements Serializable {
private static final long serialVersionUID = -3252213465022678048L;
@Id
@Column(name = "eventId")
private long eventId;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "cmEventSnap",
joinColumns = @JoinColumn(name = "eventId"),
inverseJoinColumns = @JoinColumn(name = "snapshotId"))
private List<Snapshot> snapshots = new ArrayList<Snapshot>();
// setters & getters
}
@Entity
@Table(name = "cmSnapshot")
public class Snapshot implements Serializable {
private static final long serialVersionUID = -3892306246413539227L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "snapshotId")
private long snapshotId;
@ManyToMany(mappedBy = "snapshots", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Event> events = new ArrayList<Event>();
// setters & getters
}
@Entity
@Table(name = "cmQueue")
public class Queue implements Serializable {
private static final long serialVersionUID = 2209454705341173802L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "queueId")
private long queueId;
@OneToMany(mappedBy = "queue", cascade = CascadeType.ALL)
private List<Snapshot> snapshots = new ArrayList<Snapshot>();
// setters & getters
}
所以我的问题在于,从 JPA 自动创建的事件实体的 JoinTable 变得非常大,并且随着时间的推移变得越来越慢。
我想在 eventsId 列上为该表创建索引。
有没有办法通过使用注释来做到这一点? 如果没有,我该如何手动创建可连接的新实体?
谢谢。
【问题讨论】:
-
您使用的是 Hibernate、Toplink、...?
-
@ŁukaszRżanek 我现在正在使用 jpa,但可以添加 Hibernate。
-
@Indexin 在普通的 JPA 和 Hibernate 中都不起作用。您可以手动添加索引。
标签: java jpa indexing jointable