我正在学习 SpringBoot 并尝试创建一个简单的 API。使用 H2 作为数据层。我的表架构如下DROP TABLE IF EXISTS Users;DROP TABLE IF EXISTS Cards;CREATE TABLE Users(USER_ID INT PRIMARY KEY,              NAME VARCHAR(255) NOT NULL,              USERNAME VARCHAR(255) NOT NULL,              PASSWORD VARCHAR(255) NOT NULL,              IS_ADMIN BOOL);insert into Users values(10001,'Administrator', 'admin', 'admin', true);CREATE TABLE Cards(CARD_ID INT PRIMARY KEY,              NUMBER VARCHAR(20) NOT NULL,              EXPIRY VARCHAR(5) NOT NULL,              CVV INT,              USER INT,              foreign key (USER) references Users(USER_ID));我的用户实体如下所示package springboot;import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import javax.persistence.*;import javax.validation.constraints.NotBlank;import java.util.List;@Data@Entity@Table(name = "USERS")@ApiModel(description = "the USER object")public class User {    @ApiModelProperty(notes = "The id of User")    private @Column(name = "USER_ID") @Id @GeneratedValue Long user_id;    @ApiModelProperty(notes = "The name of User")    private @Column(name = "NAME") String name;    @ApiModelProperty(notes = "The username of User", required = true)    @NotBlank(message = "Username is mandatory")    private @Column(name = "USERNAME") String username;    @ApiModelProperty(notes = "The password of User", required = true)    @ValidPassword(message = "Password is mandatory")    private @Column(name = "PASSWORD") String password;    @ApiModelProperty(notes = "The admin status of User")    private @Column(name = "IS_ADMIN") boolean isAdmin;    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)    private List<CreditCard> cards;    public User() {}    public User(String name, String username, String password, boolean isAdmin) {        this.name = name;        this.username = username;        this.password = password;        this.isAdmin = isAdmin;    }我试图搜索并遵循几个教程,但无法使其正常工作。有人可以指出我错在哪里吗?
                    
                    
                1 回答
 
                    
                    
                            蛊毒传说
                            
                                
                            
                        
                        
                                                
                    TA贡献1895条经验 获得超3个赞
实际上是例外
Column "USER_USER_ID" not found;
如果您看到查询,insert into cards (cvv, expiry, number, user_user_id, card_id) values (?, ?, ?, ?, ?)则提到了user_user_id,它不是列名
所以问题是你没有user在 CreditCard实体中提到列名。尝试下面它会工作
在 CreditCard.class 中进行更改
@ApiModelProperty(notes = "The owner user of credit card") @ManyToOne @JoinColumn(name = "user") // Added the name attribute private User user;
如果您查看他们的源代码,@JoinColumn's name attribute他们已经明确提到
如果连接用于元素集合,
连接列名称形成为
以下内容的串联:实体的名称;“_”;
引用的主键列的名称。
编辑
对于第二部分,您可以直接使用 JPA 的功能。
List<CreditCard> findByNumberContainingAndUser(String number, User user);
添加回答
举报
0/150
	提交
		取消
	