- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有 3 个实体
群组
@Entity
@Table(name = "`group`")
public class Group implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_group")
private Long id;
@OneToMany(mappedBy = "group",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@OrderColumn(name = "id_student")
private List<Student> students = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "id_faculty")
private Faculty faculty;
.....getters/setters
}
学生
@Entity
@Table(name = "student")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Long.class)
public class Student implements Serializable {
@Id
@Column(name = "id_student")
private Long id;
......
@OneToMany(mappedBy = "student",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
private List<Rating> ratings = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "id_okr")
private OKR okr;
@ManyToOne
@JoinColumn(name = "id_group")
private Group group;
.....getters/setters
}
评级
@Entity
@Table(name = "rating")
public class Rating implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_rating")
private Long id;
@Temporal(TemporalType.DATE)
@Column
private Date date;
@ManyToOne
@JoinColumn(name = "id_student")
private Student student;
@ManyToOne
@JoinColumn(name = "id_paragraph")
private Paragraph paragraph;
.....getters/setters
}
JPA 查询
@Query(value = "SELECT g FROM Group g INNER JOIN FETCH g.students s LEFT JOIN FETCH s.ratings r WHERE g.id = :id AND s.group.id = g.id AND (r.student.id = s.id AND r.date BETWEEN :startMonth and :endMonth OR r IS NULL) GROUP BY s.id")
Group findGroupByStudentGroupId(@Param("id") Long id ,@Param("startMonth") Date startMonth, @Param("endMonth") Date endMonth );
我有一个 ID 为 8000 的学生,在提取查询后,结果列表包含 8001 个元素,其中包含我拥有的 8 个学生和 7993 个空值。如果我删除注释 @OrderColumn 我有 MultiBagException(不能同时获取)。如果将 @OrderColumn 添加到实体 Student 中的评级 @OneToMany 关联,我在 Rating 集合和 Student 集合中有空值。对我来说,@OrderColumn 将空值作为集合中最大的 id 返回的逻辑似乎很奇怪。有什么办法可以解决吗?
Hibernate 5.1.0 最终版本
Spring 数据 JPA 1.8.2
最佳答案
当您尝试获取具有特定组和评分的学生时,您可以从学生实体获取查询并加入评分实体。您不必为组实体显式添加加入,因为它已经在与学生的多对一映射中。
您可以按如下方式更改您的查询:
@Query(value = "SELECT s FROM Student s LEFT JOIN s.ratings r WHERE s.group.id = :id AND (r.date BETWEEN :startMonth and :endMonth OR r IS NULL) GROUP BY s.id")
List<Student> findGroupByStudentGroupId(@Param("id") Long id ,@Param("startMonth") Date startMonth, @Param("endMonth") Date endMonth );
关于java - 使用@OrderColumn 的JPA 多重获取返回多个空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55239976/
我使用列表。该列表由一个复合主键组成,该主键也用于对列表进行排序。问题是如果我删除列表中的一个元素(关键化合物),注解 @OrderColumn 生成更新主键的请求,成本上升异常类型: [26-05-
我有@OrderColumn 的@ManyToMany 映射如下: class Tag { @ManyToMany(fetch = FetchType.LAZY) @Getter @J
这是一个后续问题: Is @ManyToMany(mappedBy = ... ) + @OrderColumn supported by the JPA? 我指的是@OrderColumn Java
我正在尝试创建保留顺序的父子表。 Hibernate 文档中的示例 7.8 显示了如何执行此操作: @Entity public class Customer { @Id @GeneratedV
我有 2 个具有 oneToMany 关系的实体。我想维护子实体的插入顺序。我为此使用了@orderColumn。代码: 父类: @Entity public class Order{ priva
在持久化和从数据库中检索时维护集合顺序的首选方法是什么? 我知道 @OrderBy 更像是一种内存中排序,只有当您按照您选择的列的顺序保留行时,它才可能用于检索。 假设我选择使用由数据库序列支持的列,
假设我们有实体 A 和 B 的 @OneToMany 关系。每个 A 可以有多个 B。 @Entity public class A{ @Id private long id; ...
有 3 个实体 群组 @Entity @Table(name = "`group`") public class Group implements Serializable { @Id
我想使用 @OrderColumn 更新现有模型。因为表中已经存在数据,所以我想将其设为可为空,这是默认值。 @ManyToMany(fetch = FetchType.EAGER) @OrderCo
我在 Hibernate 4.2.5 中使用 JPA 2.0。我有到相同实体类型的双向映射。 @OneToMany(mappedBy = "parent", cascade = { CascadeTy
关于 m-n 关系的一般建议是使用 Set 而不是 List,因为它为某些操作提供了更好的性能。 我试图将它与注释 @OrderColumn(name = "position") 结合起来。我使用它所
我有一个实体映射如下: @Entity @Table(name = "Groups") @IdClass(value = GroupId.class) public class Group imple
嗨,我正在尝试做与文档中相同的事情 http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch07.html#d5e5275 为什么会这样
我在我的实体之一中定义了以下集合: @ElementCollection(targetClass = Role.class) @CollectionTable(name = "user_roles",
我想在我的 OrderColumn 表中添加一个 NOT NULL 约束。使用约束运行我的代码时出现约束违规错误。在没有约束的情况下运行,我发现该行首先在没有 OrderColumn 的情况下插入,然
我正在尝试使用 @OrderColumn使用 Hibernate 3.5 进行注释 @OneToMany(mappedBy = "parent",fetch=FetchType.EAGER, casc
我有一个 productJob 表和一个 quadrat 表。每个样方都可以安装在许多 productJob 上,并且每个 productJob 可以有 1 到 4 个相同或不同类型的 quadrat
我正在使用 Hibernate 的 @OrderColumn 注释对我的数据库中的列表进行排序。它正确地生成数据库表中的列来存储索引,并且最初也存储正确的索引。 但是当我尝试更改列表中的顺序然后使用
我有以下实体。 @Entity public class Shop { @OneToMany( cascade = { CascadeType.PERSIST, CascadeType.MER
我的示例代码: public class A { @OneToMany @OrderColumn(name = "ORDER") private List bList; ... } publ
我是一名优秀的程序员,十分优秀!