Java Hibernate,Criteria.list()返回我期望的更多行
我对spring和hibernate的项目有问题: 在我的数据库(mysql)中,我有以下表:Java Hibernate,Criteria.list()返回我期望的更多行,java,hibernate,Java,Hibernate,我对spring和hibernate的项目有问题: 在我的数据库(mysql)中,我有以下表: table Operator{ idOperator int(12) primary key auto_increment, name varchar(20), surname varchar(20), username varchar(20), password varchar(20), type varchar(2) } eng
table Operator{
idOperator int(12) primary key auto_increment,
name varchar(20),
surname varchar(20),
username varchar(20),
password varchar(20),
type varchar(2)
} engin=InnoDB;
table Customer{
idCustomer int primary key,
name varchar(20),
surname varchar(20),
lastOrder date,
} engine = InnoDB;
以及前两个表之间的多对多关系:
table portfolio{
idOperator int,
idCustomer int,
foreign key(idOperator) references Operator(idOperator)on update cascade on delete cascade
foreign key(idCustomer) references Customer(idCustomer) on update cascade on delete cascade
}engine = InnoDB;
在运算符的实体类中,我以以下方式映射表:
@Id
@Column(name = "idOperator")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "type")
private String type;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "portfolio", joinColumns = {
@JoinColumn(name = "idOperator")}, inverseJoinColumns = {
@JoinColumn(name = "idCustomer")
})
private List<Customer> customers = new ArrayList<Customer>();
结果包括每个操作员在关系“投资组合”中参与的次数相等的时间数
有人能帮我吗?谢谢请尝试以下方法:
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Operator.class);
criteria.add(Restrictions.eq("type","ad"));
criteria.setProjection(Projections.distinct(Projections.property("id")))
return criteria.list();
尝试在您的标准中使用Projections.distinct我尝试了您的提示,但我得到了以下错误:javax.el.PropertyNotFoundException:在java.lang.Integer类型上找不到属性“id”?您的实体中是否有id的getter和setter?是的,现在我解决了添加以下行的问题:criteria.setResultTrasformer(criteria.distinct\u ROOT\u entity);
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Operator.class);
criteria.add(Restrictions.eq("type","ad"));
criteria.setProjection(Projections.distinct(Projections.property("id")))
return criteria.list();