2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java set初始化_Java-Hibernate条件.setResultTransformer()使用默认值初始化模型字段...

java set初始化_Java-Hibernate条件.setResultTransformer()使用默认值初始化模型字段...

时间:2020-01-25 13:43:58

相关推荐

java set初始化_Java-Hibernate条件.setResultTransformer()使用默认值初始化模型字段...

我是Hibernate的新手,我正尝试从数据库中获取一些数据。我不想获取完整的数据,而只是一个实体的投影。

问题是,在for循环中,当我获得ID和投影的名称时,它将获得默认值id = 0和name = null而不是id = 7和name =“ Name

8”的记录数据库中的原始实体。你知道是什么原因导致这个问题吗?for循环位于最后一个代码中。

这是学生实体

@Entity(name = "Students")

public class Student {

@Id

@GeneratedValue

@Column(name = "StudentId")

private int id;

@Column(name = "Name", nullable = false, length = 50)

private String name;

@Column(name = "Grade")

private Double grade = null;

@ManyToOne(cascade = CascadeType.PERSIST)

@JoinColumn(name = "FacultyId", nullable = false)

private Faculty faculty;

@ManyToMany(cascade = CascadeType.PERSIST)

@JoinTable(

joinColumns = @JoinColumn(name = "StudentId"),

inverseJoinColumns = @JoinColumn(name = "CourseId"))

private Collection courses;

public Student() {

this.courses = new HashSet();

}

// Setters and Getters for all fields

}

这是StudentModel

public class StudentModel {

private int id;

private String name;

public int getId() {

return this.id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return this.name;

}

public void setName(String name) {

this.name = name;

}

}

而我正在执行的代码

Session session = sessionFactory.openSession();

session.beginTransaction();

{

Criteria criteria = session.createCriteria(Student.class);

criteria.add(Restrictions.eq("name", "Name 8"))

.setProjection(

Projections.projectionList()

.add(Projections.property("id"))

.add(Projections.property("name")))

.setResultTransformer(

Transformers.aliasToBean(StudentModel.class));

@SuppressWarnings("unchecked")

List students = criteria.list();

for (StudentModel student : students) {

System.out.println(student.getId());

System.out.println(student.getName());

}

session.getTransaction().commit();

session.close();

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。