如何在 JPA Spring Boot 中映射主键和外键等两个表?

How to map two tables like primary key and foreign key in JPA Springboot?

我有这两个表,想映射用户名字段,以便我只能查询特定用户的消息。我该怎么做?

@Entity
public class User {
    
    
    @Id
    private String userName;
}


@Entity(name = "message")
public class Message {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private UUID messageID;
    String message;
    String userName;
    Long timeStamp;
    boolean isSent;

}
    

映射应该在用户名之间完成。

只需在当前实体 class 中添加另一个实体,jpa 会使用主键自动映射您的实体 classes。

@Entity
public class User { 
    
    @Id
    private String userName;
    private Message message;

}

您需要使用 @JoinColumn 根据您的关系添加 @ManyToOne@OneToMany 映射,如下所示。

@Entity
public class User {    
    
    @Id
    private String userName;
   
    @OneToMany
    @JoinColumn(name = "userName", referencedColumnName = "userName")
    List<Message> messages;
}
@Entity(name = "message")
public class Message {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private UUID messageID;
    String message;
    String userName;
    Long timeStamp;
    boolean isSent;
}