在使用JPA的MapsId进行关联映射时,可以避免生成复合键的方法如下:
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Getter and Setter
}
@Entity
public class Order {
@EmbeddedId
private OrderId id;
@MapsId("customerId")
@ManyToOne
private Customer customer;
// Getter and Setter
}
@Embeddable
public class OrderId implements Serializable {
private Long orderId;
private Long customerId;
// Getter and Setter
}
在Order实体类中使用@MapsId注解将customerId属性映射到Customer实体类的id属性,并且使用@ManyToOne注解表示多对一关系。
在OrderId类中使用@Embeddable注解表示这是一个嵌入式主键,并且实现Serializable接口。
这样,当保存Order实体对象时,会自动将关联的Customer实体的id作为外键值保存到数据库中,而不是生成一个复合键。