gpt4 book ai didi

java - 在 hibernate 中执行查询时,我应该如何解决异常 "Unable to resolve path"?

转载 作者:行者123 更新时间:2023-12-02 07:21:39 24 4
gpt4 key购买 nike

我正在尝试测试一个使用 hibernate 和注释的简单应用程序。我有以下具有以下外键约束的数据库表。

create table user_info 
(
mobile_number varchar(16) primary key,
gender char(1),
language varchar(4))


create table user_order_info
(order_id integer(16) not null primary key auto_increment,
mobile_number varchar(16) not null,
location_name varchar(32) not null,
foreign key(mobile_number) references user_info(mobile_number),

create table user_queue_order_info
(queue_id integer(16) not null primary key auto_increment,
order_id integer(16),
mobile_number varchar(16) not null,
order_value integer(8) not null,
foreign key(mobile_number) references user_info(mobile_number),
foreign key(order_id) references user_order_info(order_id) on delete cascade)

上表各自的实体表如下:

@Entity
@Table(name = "user_info")
public class UserInfo implements Serializable {
private String mobileNumber;
private char gender;
private String language;
//getters and setters and constructors
}


@Entity
@Table(name = "user_order_info")

public UserOrderInfo implements Serializable {
private long orderId;
private String locationName;
private UserInfo userInfo;
//getters and setters and constructors
}


@Entity
@Table(name = "user_queue_order_info")

public class UserQueueOrderInfo implements Serializable {

private long queueId;
private int orderValue;
private UserInfo userInfo;
private UserOrderInfo userOrderinfo;
//getters and setters , constructors

问题是当我尝试使用 UserOrderInfoDao 通过以下方法访问数据库时,出现异常。

public UserOrderInfo UserOrderInfoByMobileNumber(String mobileNumber ) {
List<UserOrderInfo> userOrderInfoList = sessionFactory.getCurrentSession().createQuery("from UserOrderInfo where userInfo.mobileNumber='"+mobileNumber+"'").list();
if(!userOrderInfoList.isEmpty()){
return userOrderInfoList.get(0);
}
return null;
}

当我尝试通过跟踪异常进行调试时,出现的异常是:

Exception Unable to resolve path [userInfo.mobileNumber], unexpected token [userInfo] [from com.appls.entity.UserOrderInfo where userInfo.mobileNumber='7770909090']

为什么会出现这个问题?我正在等待您的宝贵建议。

我通过以下方式完成了 getter 和 setter 中的映射:

@Id 
@Column(name = "mobile_number")
public String getMobileNumber() {
return mobileNumber;
}

其他字段也同样。

User_info 的实体是

    private String mobileNumber;        
private char gender;
private String language;

@Id
@Column(name = "mobile_number")
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}

@Column(name = "gender")
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}

@Column(name = "language")
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language =language;
}

public UserInfo() {
super();
}


public UserInfo(String mobileNumber){
super();
this.mobileNumber = mobileNumber;
}

public UserInfo(String mobileNumber, char gender, String language) {
super();
this.mobileNumber =mobileNumber;
this.gender = gender;
this.language = language;

}

@Override
public String toString() {
return "{\"mobileNumber\": \"" + this.mobileNumber
+ "\", \"gender\": \"" + this.gender
+ "\", \"language\": \"" + this.language }";
}

最佳答案

要么更改private String mobileNumber;包括getter/setter

as private String mobile_number;

或者对其进行注释

@Column(name="mobile_number")
private String mobileNumber;

private String locationName;private String orderValue;相同

查询应类似于 createQuery("from UserOrderInfo userOrderInfo where userOrderInfo.userInfo.mobileNumber='"+mobileNumber+"'").list()

关于java - 在 hibernate 中执行查询时,我应该如何解决异常 "Unable to resolve path"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com