在 JPQL 中引用连接列
Referencing join column in JPQL
通过查询 Select c from Card c join User u on c.userId=u.userId where u.username=':u'
,我试图根据用户 table 中可用的用户名获取用户的卡片列表。但是,当我 运行 它时,我 运行 进入了 antlr.SemanticException: could not resolve property: userId of: com.abc.SheridanSportsWAR.entity.Card
异常。如何在我的 Card
实体中引用 UserId
列?
Card.java
@Entity
public class Card {
@Id
@Column(name="CardId")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer cardId;
@Column(name="CardNumber")
private String cardNumber;
@Column(name="CardType")
private String cardType;
@Column(name="ExpiryMonth")
private String expiryMonth;
@Column(name="ExpiryYear")
private String expiryYear;
@Column(name="CardHolder")
private String cardHolder;
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "UserId")
private User userJ;
@OneToMany(mappedBy = "cardJ")
private List<Purchase> purchases;
User.java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="UserId")
private Integer userId;
@Column(name="FirstName")
private String firstName;
@Column(name="LastName")
private String lastName;
@Column(name="Email")
private String email;
@Column(name="Username")
private String username;
@Column(name="Password")
private String password;
@Column(name="RoleName")
private String roleName;
@OneToMany(mappedBy="userJ", cascade= CascadeType.ALL)
private List<Card> cards;
错误信息很清楚。您的 Card
实体中没有字段 userId
。创建一个这样的:
@Column(name = "UserId", insertable=false, updatable=false)
private Integer userId;
AFAIK,问题似乎是 card
table.
中没有 userId
列
通过查询 Select c from Card c join User u on c.userId=u.userId where u.username=':u'
,我试图根据用户 table 中可用的用户名获取用户的卡片列表。但是,当我 运行 它时,我 运行 进入了 antlr.SemanticException: could not resolve property: userId of: com.abc.SheridanSportsWAR.entity.Card
异常。如何在我的 Card
实体中引用 UserId
列?
Card.java
@Entity
public class Card {
@Id
@Column(name="CardId")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer cardId;
@Column(name="CardNumber")
private String cardNumber;
@Column(name="CardType")
private String cardType;
@Column(name="ExpiryMonth")
private String expiryMonth;
@Column(name="ExpiryYear")
private String expiryYear;
@Column(name="CardHolder")
private String cardHolder;
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "UserId")
private User userJ;
@OneToMany(mappedBy = "cardJ")
private List<Purchase> purchases;
User.java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="UserId")
private Integer userId;
@Column(name="FirstName")
private String firstName;
@Column(name="LastName")
private String lastName;
@Column(name="Email")
private String email;
@Column(name="Username")
private String username;
@Column(name="Password")
private String password;
@Column(name="RoleName")
private String roleName;
@OneToMany(mappedBy="userJ", cascade= CascadeType.ALL)
private List<Card> cards;
错误信息很清楚。您的 Card
实体中没有字段 userId
。创建一个这样的:
@Column(name = "UserId", insertable=false, updatable=false)
private Integer userId;
AFAIK,问题似乎是 card
table.
userId
列