java - JPA、 hibernate 、Java。复合主键,其中之一也是外键

标签 java mysql hibernate jpa composite-primary-key

我遇到了标题中简短描述的问题。谁能告诉我,如何使用 JPA 获得相同的数据库?

create table ALBUM
( 
 IdAlbum int, 
 AlbumName varchar(35) not null, 
 UrlOfAlbum varchar(60) not null,
 Primary Key(IdAlbum) 
);
create table ARTIST
(
 IdArtist int, 
 ArtistName varchar(35) not null, 
 Primary Key(IdArtist) 
);
create table TRACK
(
 IdTrack int,
 IdAlbum int,
 IdArtist int,
 TrackName varchar(35) not null,
 Primary Key(IdTrack, IdAlbum),
 Foreign Key(IdAlbum) references Album(IdAlbum),
 Foreign Key(IdArtist) references Artist(IdArtist)
);

最佳答案

只需将列放入嵌入键中并在主类中保留关系:

@Embeddable
class TrackId
{
    private Integer idAlbum;
    private Integer idTrack;
    // getters, setters, equals and hashCode
}

@Entity
class Track
{
     @EmbeddedId
     TrackId trackId;

     @ManyToOne
     @MapsId("idAlbum")
     @JoinColumn(name = "idAlbum", referencedColumnName = "idAlbum")
      private Album album = null;

      ....
}

关于java - JPA、 hibernate 、Java。复合主键,其中之一也是外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064122/

相关文章:

java - 是否有一个 XPath 表达式可以从两个不同的位置获取值?

php - React/Php/MySQL - 通过 REST API (AJAX) 以两种方式发送变量

java - 为什么这个简单的 hibernate 示例不起作用?

java - 与 postgres 的 spring JDBC 连接问题

java - 具有多重性的 EByteArray 或 EFloat 的 Ecore defaultValue

java - 如何使用 Java 代码向 Flink 集群提交作业?

java - 在 Eclipse 中,是否可以找到项目中所有采用某种参数类型的方法?

javascript - 如何使用 php 发布数组并循环遍历它?

php - 页面需要两次刷新表数据来更新PHP+HTML

java - Spring mvc 多实体数据库持久化