【发布时间】:2015-05-26 19:56:06
【问题描述】:
我在 oracle Thin 11 g 上运行 sql 语句“SELECT * FROM company”,它返回 3 行。
我已经正确配置了数据源并尝试了如下的查询以及标准,即使它们应该返回 3 行,它们也没有返回任何内容。 //import org.hibernate.Criteria;
1。 标准
Criteria criteria = session.createCriteria(Company.class);
criteria
.add(Restrictions.eq("companyName", companyName))
.add(Restrictions.eq("companyId", companyId));
List<Company> companyList = criteria.list();//**THIS RETURNS 0 ROWS**
2。 查询
Query query=session.createQuery("from Company where companyName= :companyName and companyId= :companyId");
query.
setParameter("companyId",companyId).
setParameter("companyName", companyName);
List<Company> companyList = query.list();//**THIS RETURNS 0 ROWS**
3.查询中的SQL
Query query=session.createSQLQuery("SELECT * FROM Company");
List<Company> CompanyList = query.list();//**THIS RETURNS 0 ROWS**
这里是公司实体
//javax.persistence.*;
@Entity
@Table(name = "COMPANY")
public class Company {
@Id
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="COMPANY_SEQ")
@SequenceGenerator(name="COMPANY_SEQ", sequenceName="COMPANY_SEQ", allocationSize=1)
@Column(name = "COMPANY_ID")
int CompanyId;
@Basic
@Column (name ="COMPANY_NAME")
private String companyName;
@Basic
@Column (name ="COMPANY_ID")
private Integer companyId;// The login id of user whose data is updated
@Basic
@Column (name ="UPDATED_BY")
private String updatedBy;
@Basic
@Column (name ="UPDATE_DATE")
private Date updateDate;
//Default no-arg constructor and another constructor with all the fields.
//default getters and Setters
}
我错过了什么,为什么不是所有的休眠查询都没有返回行?感谢您的帮助。
【问题讨论】:
-
可能是因为您正在连接到不同的数据库/模式,或者因为数据已插入,但尚未提交。
-
@JBNizet 我已经运行了 SELECT * FROM company 并重新调整了 SQL Developer 上的行。所以我知道数据已提交。
-
一个事务会看到它自己的变化,即使这个事务还没有提交。其他并发事务不会看到第一个事务的未提交更改。这就是事务隔离的原则(至少设置为 READ_COMMITTED 时)。在 SQL 开发人员中执行
commit;以确保。 -
@JBNizet 我只是脱帽致谢!!
-
我刚刚添加了您的回复作为答案,以防其他人遇到同样的问题。随意编辑它!
标签: java oracle hibernate hql criteria