【发布时间】:2013-05-30 00:59:28
【问题描述】:
以下行返回空值:
List accountList = hibernateTemplate.find("from Accounts a where a.userId=?",userId);
我在控制台中收到以下信息:
2013-04-03 21:09:48 DEBUG Loader:1197 - 结果行:null
2013-04-03 21:09:48 DEBUG Loader:1197 - 结果行:null
这是我的实体类:
@Repository
@Entity
@Table(name = "ACCOUNTS")
public class Accounts {
@Column(name="ACCOUNT_ID")
@Id
@GeneratedValue
private int accountId;
@Column(name="ACCOUNT_NUMBER")
private String accountNumber;
@Column(name="ACCOUNT_TYPE_CODE")
private String accountTypeCode;
@Column(name="USER_ID")
private String userId;
@Column(name="ACCOUNT_NAME")
private String accountName;
@Column(name="DATE_OPENED")
private Date dateOpened;
@Column(name="DATE_CLOSED")
private Date dateClosed;
@Column(name="CURRENT_BALANCE")
private double currentBalance;
@Column(name="OTHER_ACCOUNT_DETAILS")
private String otherAccountDetails;
@Column(name="ADD_TS")
private Date addTimestamp;
@Column(name="ADD_USR")
private String addUser;
@Column(name="UPDT_TS")
private Date updateTimestamp;
@Column(name="UPDT_USR")
private String updateUser;
@ManyToOne
private Customer customer;
谁能帮我解决这个问题?我真的很感激。
这是 Hibernate 生成的查询
休眠:选择 accounts0_.ACCOUNT_ID 作为 ACCOUNT1_23_,accounts0_.ACCOUNT_NAME 作为 ACCOUNT2_23_,accounts0_.ACCOUNT_NUMBER 作为 ACCOUNT3_23_,accounts0_.ACCOUNT_TYPE_CODE 作为 ACCOUNT4_23_,accounts0_.ADD_TS 作为 ADD5_23_,accounts0_.ADD_USR 作为 ADD6_23_,accounts0_.CURRENT_3,accounts0_.CURRENT_3,作为accounts0_.CURRENT_3,作为。 customer_CUSTOMER_ID as customer14_23_, accounts0_.DATE_CLOSED as DATE8_23_, accounts0_.DATE_OPENED as DATE9_23_, accounts0_.OTHER_ACCOUNT_DETAILS as OTHER10_23_, accounts0_.UPDT_TS as UPDT11_23_, accounts0_.UPDT_USR as UPDT12_23_, accounts0_.USER_ID as USER13_23_ from ACCOUNTS accounts0_ where accounts0_.USER_ID=?
查询有问题吗?还是域配置?
请帮帮我。
【问题讨论】:
-
在 hibernateTemplate.find() 上传递的 userId 的值是多少? userId 真的是一个字符串对象吗?表 ACCOUNTS 是否有一个名为 USER_ID 类型 varchar() 的列?
-
Yori,谢谢您的回复。是的,userId 有一个值,Accounts 表也有该特定 id 的记录。奇怪的是,如果我给出以下查询,我会得到值,但不是当我想选择所有列时——“来自 Accounts a where a.userId=?”,userId 我错过了 Entity 类中的任何配置?
-
如果你设置你的“show_sql = true”,看看什么样的SQL Hibernate试图执行?此外,尝试手动执行相同的查询,这可能有助于找出真正的问题。我看不出你的代码有什么问题...
-
Yori,我设置了 show_sql = true。我看到控制台中显示了选择查询。这对我来说是正确的。抱歉,我现在没有可用的应用程序。我会尽快发布生成的查询。我在数据库中尝试了查询,我得到了 2 行。只有在这里我得到两个空值。这对我来说太令人沮丧了,我花了很多时间。
-
Yori,这是 Hibernate 生成的查询