【问题标题】:Result row : null from HibernateTemplate Find()结果行:HibernateTemplate Find() 中的 null
【发布时间】: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 生成的查询

标签: spring hibernate


【解决方案1】:

我有点不明白为什么要设置 USER_ID String(varchar) 类型的列,但是关于你的情况,你可以这样写:

hibernateTemplate.find("from Accounts a where a.userId='" + userId + "'");

它会很好用,也许对你有帮助:)

【讨论】:

  • 感谢您的回答。 USER_ID 实际上不是主键,可能我应该将名称更改为更合适的名称。我会试试你的查询看看。
猜你喜欢
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多