如何在JPA Springboot中映射两个表,例如主键和外键?

时间:2020-09-28 05:27:53

标签: spring-boot hibernate jpa spring-data-jpa persistence

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

@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;

}
    

应该在用户名之间进行映射。

2 个答案:

答案 0 :(得分:0)

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

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

}

答案 1 :(得分:0)

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

@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;
}