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

问题描述

我有这两个表,并且想要映射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;

}
    

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

解决方法

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

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

}
,

您需要使用@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;
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...