Java 休眠@OneToOne@JoinColumns注释加载速度
我试图使用SpringDataJPA注释在这两个实体之间创建关联 这是我的第一个实体:演员Java 休眠@OneToOne@JoinColumns注释加载速度,java,spring,hibernate,spring-data-jpa,Java,Spring,Hibernate,Spring Data Jpa,我试图使用SpringDataJPA注释在这两个实体之间创建关联 这是我的第一个实体:演员 @Entity @IdClass(SharedPrimaryKey.class) @Data @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode @Table(name = "ACTOR") public class Actor implements Serializable { @Id @Column(n
@Entity
@IdClass(SharedPrimaryKey.class)
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@Table(name = "ACTOR")
public class Actor implements Serializable {
@Id
@Column(name = "ACTOR_NAME")
private String actorName;
@Id
@Column(name = "ACTOR_DOB")
private String actorDob;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="ACTOR_NAME"),
@JoinColumn(name="ACTOR_DOB")
})
private Movie movie;
}
这是我的第二个实体:电影
@Entity
@IdClass(SharedPrimaryKey.class)
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@Table(name = "MOVIE")
public class Movie implements Serializable {
@Id
@Column(name = "ACTOR_NAME")
private String actorName;
@Id
@Column(name = "ACTOR_DOB")
private String actorDob;
@Column(name = "MOVIE_TITLE")
private String movieTitle;
}
我面临的问题是,当我试图根据演员姓名检索所有电影时,@OneToOne和@JoinColumns功能花费的时间太长。我以前将此设置为@OneToMany,速度要快得多,但由于两个表都使用复合主键,所以需要进行此更改。我可以使用哪些注释来加速此查询?“我尝试根据演员姓名检索所有电影”它没有看到与我的OneToOne
关系。更多的是一个manytomy
one。忘掉复合id-s。他们没有任何好处。
Lombok注释是许多注释的包装器。
@如果表名等于实体名,则不需要表
@Entity
@Data
public class Actor implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ACTOR_ID")
private String actorId;
@Column(name = "ACTOR_NAME")
private String actorName;
@ManyToMany
@JoinTable(
name = "ACTOR_MOVIE",
joinColumns = @JoinColumn(name = "actorID", referencedColumnName = "actorID" ),
inverseJoinColumns = @JoinColumn(name = "movieID", referencedColumnName = "movieID"))
private List<Movie> movies = new TArrayList<>();
}
@Entity
@Data
public class Movie implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "MOVIE_ID")
private String movieID;
@Column(name = "MOVIE_TITLE")
private String movieTitle;
@ManyToMany
private List<Actor> actors = new TArrayList<>();
}
@实体
@资料
公共类参与者实现了可序列化的{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“ACTOR\u ID”)
私有字符串;
@列(name=“ACTOR\u name”)
私有字符串actorName;
@许多
@可接合(
name=“演员电影”,
joinColumns=@JoinColumn(name=“actorID”,referencedColumnName=“actorID”),
inverseJoinColumns=@JoinColumn(name=“movieID”,referencedColumnName=“movieID”))
私有列表电影=新TArrayList();
}
@实体
@资料
公共类电影实现了可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“MOVIE\u ID”)
私人字符串电影ID;
@列(name=“MOVIE\u TITLE”)
私人弦乐电影;
@许多
私有列表参与者=新TArrayList();
}
更改onetomany和onetoone将彻底改变您的设计。你们应该先决定需求。演出时间晚些。