Я новичок в Hibernate Framework, пожалуйста, предоставьте свое понимание этого Я хочу заполнить список на основе условия, где, но Hibernate List () возвращает избыточные / дублированные данные в списке вместо отображения всех записей, основанных наусловие where в таблице не первичного ключа, в которой данные предложения where одинаковы для всех столбцов
У меня нет возможности добавить первичный ключ.
Ниже приведен фрагмент кода
Это мой файл конфигурации hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/oracle</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="show_sql">true</property>
<mapping class="com.jspiders.app.dto.Office"/>
</session-factory>
Это мой класс DTO
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="office")
public class Office {
@Id
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "column3")
private String column3;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColumn3() {
return column3;
}
public void setColumn3(String column3) {
this.column3 = column3;
}
@Override
public String toString() {
return "Office [id=" + id + ", name=" + name + ", column3=" + column3 + "]";
}
Это мой класс DAO
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import com.jspiders.app.dto.Office;
import com.jspiders.app.util.HibernateUtil;
public class OfficeDAO {
SessionFactory factory = HibernateUtil.getUtility().getSessionFactory();
public List<Office> retrieve() {
Session s = factory.openSession();
Query q = s.createQuery("select distinct o from Office o where id=1");
List<Office> list = q.list();
for (Office oo : list) {
System.out.println(oo.toString());
}
return list;
}
Это мой синглтон-класс
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final HibernateUtil util;
private SessionFactory factory;
static {
util=new HibernateUtil();
}
private HibernateUtil()
{
Configuration cfg=new Configuration();
cfg.configure();
factory = cfg.buildSessionFactory();
}
public static HibernateUtil getUtility() {
return util;
}
public SessionFactory getSessionFactory() {
return factory;
}
@Override
protected void finalize() throws Throwable {
if(factory!=null)
factory.close();
}
this snippet is from my main class
public static void main(String[] args) {
OfficeDAO dao = new OfficeDAO();
List<Office> list=dao.retrieve();
}
Это создание моего офисного стола sql
CREATE TABLE oracle.office
(
id INT NOT NULL,
NAME VARCHAR(30) NOT NULL,
column3 VARCHAR(30) NOT NULL
);
Данные офисного стола
Идентификатор имени column3 1 aqwert 1 b abc
Это мой результат
Hibernate: выберите отдельный office0_.id в качестве id1_0_, office0_.column3 в качестве column2_0_, office0_.name в качестве name3_0_ из office office0_, где office0_.id = 1Офис [id = 1, name = abc, column3 = qwert]Офис [id = 1, имя = abc, column3 = qwert]