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

丹尼斯·里佐夫(Denis Rizov)

我是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<Course> courses;

    public Student() {
        this.courses = new HashSet<Course>();
    }

    // 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<StudentModel> students = criteria.list();

        for (StudentModel student : students) {
            System.out.println(student.getId());
            System.out.println(student.getName());
        }

        session.getTransaction().commit();
        session.close();
    }
JB Nizet

您可能只是忘记了为投影分配别名:

Projections.projectionList()
           .add(Projections.property("id"), "id")
           .add(Projections.property("name"), "name")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在Java中将数组初始化为默认值而不初始化为arraylist?

来自分类Dev

Hibernate使Weld无法在Java SE中初始化

来自分类Dev

骨干模型:基于条件的默认值

来自分类Dev

未将int初始化为零的类的实例变量的Java默认值

来自分类Dev

Hibernate使用条件执行更新

来自分类Dev

Java数据封装,初始化和后置条件?

来自分类Dev

使用spring初始化java枚举中的字段

来自分类Dev

使用spring初始化java枚举中的字段

来自分类Dev

Rails使用默认值初始化新对象

来自分类Dev

多值设置未使用默认值初始化

来自分类Dev

无法使用默认值初始化结构

来自分类Dev

使用默认值初始化HashMap吗?

来自分类Dev

无法使用默认值初始化输入[数字]

来自分类Dev

如何使用默认值动态初始化数组?

来自分类Dev

何时初始化默认值?

来自分类Dev

何时初始化默认值?

来自分类Dev

Hibernate引发SQLException“ id字段没有默认值”

来自分类Dev

Hibernate / SQLException:字段没有默认值

来自分类Dev

有人可以澄清与完整初始化相关的 Java 内存模型最终字段语义吗?

来自分类Dev

在Java中:在构造函数中使用foreach循环初始化多维数组数据字段

来自分类Dev

如何使用字段或局部变量初始化Java中的对象?

来自分类Dev

使用for循环初始化数组,并使用最终数组元素的值作为条件(在C中)

来自分类Dev

在Java中初始化ArrayList字段的最佳实践

来自分类Dev

Java静态最终字段初始化顺序

来自分类Dev

Java中的字段初始化(如C#)

来自分类Dev

Java枚举中的静态(和最终)字段初始化

来自分类Dev

在Java中的哪里初始化静态字段?

来自分类Dev

Java构造函数与内联字段初始化

来自分类Dev

在java中初始化final字段的奇怪行为

Related 相关文章

  1. 1

    为什么在Java中将数组初始化为默认值而不初始化为arraylist?

  2. 2

    Hibernate使Weld无法在Java SE中初始化

  3. 3

    骨干模型:基于条件的默认值

  4. 4

    未将int初始化为零的类的实例变量的Java默认值

  5. 5

    Hibernate使用条件执行更新

  6. 6

    Java数据封装,初始化和后置条件?

  7. 7

    使用spring初始化java枚举中的字段

  8. 8

    使用spring初始化java枚举中的字段

  9. 9

    Rails使用默认值初始化新对象

  10. 10

    多值设置未使用默认值初始化

  11. 11

    无法使用默认值初始化结构

  12. 12

    使用默认值初始化HashMap吗?

  13. 13

    无法使用默认值初始化输入[数字]

  14. 14

    如何使用默认值动态初始化数组?

  15. 15

    何时初始化默认值?

  16. 16

    何时初始化默认值?

  17. 17

    Hibernate引发SQLException“ id字段没有默认值”

  18. 18

    Hibernate / SQLException:字段没有默认值

  19. 19

    有人可以澄清与完整初始化相关的 Java 内存模型最终字段语义吗?

  20. 20

    在Java中:在构造函数中使用foreach循环初始化多维数组数据字段

  21. 21

    如何使用字段或局部变量初始化Java中的对象?

  22. 22

    使用for循环初始化数组,并使用最终数组元素的值作为条件(在C中)

  23. 23

    在Java中初始化ArrayList字段的最佳实践

  24. 24

    Java静态最终字段初始化顺序

  25. 25

    Java中的字段初始化(如C#)

  26. 26

    Java枚举中的静态(和最终)字段初始化

  27. 27

    在Java中的哪里初始化静态字段?

  28. 28

    Java构造函数与内联字段初始化

  29. 29

    在java中初始化final字段的奇怪行为

热门标签

归档