如何解决引用JPQL中的连接列
通过查询Select c from Card c join User u on c.userId=u.userId where u.username=':u'
,我试图根据“用户”表中可用的用户名为用户获取卡列表。但是,我在运行antlr.SemanticException: could not resolve property: userId of: com.abc.SheridanSportsWAR.entity.Card
异常时遇到了问题。如何在我的UserId
实体中引用Card
列?
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;
解决方法
错误消息很清楚。您的userId
实体中没有字段Card
。创建一个这样的:
@Column(name = "UserId",insertable=false,updatable=false)
private Integer userId;
,
AFAIK,问题似乎在于userId
表中没有card
列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。