Java 休眠@OneToOne@JoinColumns注释加载速度

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

我试图使用SpringDataJPA注释在这两个实体之间创建关联

这是我的第一个实体:演员

@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将彻底改变您的设计。你们应该先决定需求。演出时间晚些。