- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个带有小部件列表的单元格。 Widgets 是一个抽象实体,它用于存储所有 future 实体的公共(public)属性,如按钮、搜索、条件等。请不要考虑 ClassNamed 接口(interface) - 它对我的结果没有影响 - 我检查了两次。
单元格(带有小部件列表):
@Entity
@Table(name = "DASHBOARD_CELL")
public class DashboardCell {
private Integer id;
private Integer rowPosition;
private Integer columnPosition;
private Integer columnWeight;
private DashboardBox dashboardBox;
private List<DashboardWidget> dashboardWidgets;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "ROW_POSITION")
public Integer getRowPosition() {
return rowPosition;
}
public void setRowPosition(Integer rowPosition) {
this.rowPosition = rowPosition;
}
@Column(name = "COLUMN_POSITION")
public Integer getColumnPosition() {
return columnPosition;
}
public void setColumnPosition(Integer columnPosition) {
this.columnPosition = columnPosition;
}
@Column(name = "COLUMN_WEIGHT")
public Integer getColumnWeight() {
return columnWeight;
}
public void setColumnWeight(Integer columnWeight) {
this.columnWeight = columnWeight;
}
@ManyToOne(optional = false, fetch=FetchType.LAZY)
@JoinColumn(name="DASHBOARD_BOX_ID")
@JsonBackReference
public DashboardBox getDashboardBox() {
return dashboardBox;
}
public void setDashboardBox(DashboardBox dashboardBox) {
this.dashboardBox = dashboardBox;
}
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "dashboardCell", fetch=FetchType.EAGER)
@JsonManagedReference
public List<DashboardWidget> getDashboardWidgets() {
return dashboardWidgets;
}
public void setDashboardWidgets(List<DashboardWidget> dashboardWidgets) {
this.dashboardWidgets = dashboardWidgets;
}
}
小部件:
@Entity
@Table(name = "DASHBOARD_WIDGET")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class DashboardWidget implements ClassNamed{
private Integer id;
private String title;
private Integer backgroundColor;
private Integer orderNumber;
private DashboardCell dashboardCell;
private String widgetType = getWidgetType();
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "ID")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "TITLE")
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(name = "BACKGROUND_COLOR_VALUE")
public Integer getBackgroundColor() {
return backgroundColor;
}
public void setBackgroundColor(Integer backgroundColor) {
this.backgroundColor = backgroundColor;
}
@Column(name = "ORDER_NUMBER")
public Integer getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(Integer orderNumber) {
this.orderNumber = orderNumber;
}
@ManyToOne(optional = false)
@JoinColumn(name = "DASHBOARD_CELL_ID")
@JsonBackReference
public DashboardCell getDashboardCell() {
return dashboardCell;
}
public void setDashboardCell(DashboardCell dashboardCell) {
this.dashboardCell = dashboardCell;
}
public String getWidgetType() {
return getClassName();
}
public void setWidgetType(String widgetType) {
this.widgetType = widgetType;
}
}
CriteriaWidget:
@Entity
@Table(name = "DASHBOARD_CRITERIA")
public class DashboardCriteria extends DashboardWidget {
private Integer value;
private Integer maximumValue;
@Column(name = "ACTUAL_VALUE")
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
@Column(name = "MAX_VALUE")
public Integer getMaximumValue() {
return maximumValue;
}
public void setMaximumValue(Integer maximumValue) {
this.maximumValue = maximumValue;
}
@Transient
@Override
public String getClassName() {
return DashboardCriteria.class.getName();
}
}
当我尝试使用以下代码查询所有带有小部件的单元格时:
sessionFactory.getCurrentSession().createCriteria(DashboardCell.class).list();
我有 4 条记录:1 个单元格有 4 个标准,1 个(相同单元格)有 4 个标准,1 个(相同单元格)有 4 个标准,1 个(相同单元格)有 4 个标准。我在数据库中拥有的是 1 个带有 4 个 DashBoardCriteria 的单元格(H2 数据库):
insert into DASHBOARD_CELL (ID, ROW_POSITION, COLUMN_POSITION, COLUMN_WEIGHT, DASHBOARD_BOX_ID) values (100, 0, 0, 12, 6);
insert into DASHBOARD_CRITERIA (ID, TITLE, BACKGROUND_COLOR_VALUE, ORDER_NUMBER, DASHBOARD_CELL_ID, ACTUAL_VALUE, MAX_VALUE) values (200, 'Registered', 16769408, 0, 100, 21, 30);
insert into DASHBOARD_CRITERIA (ID, TITLE, BACKGROUND_COLOR_VALUE, ORDER_NUMBER, DASHBOARD_CELL_ID, ACTUAL_VALUE, MAX_VALUE) values (201, 'Completed', 11723766, 1, 100, 22, 30);
insert into DASHBOARD_CRITERIA (ID, TITLE, BACKGROUND_COLOR_VALUE, ORDER_NUMBER, DASHBOARD_CELL_ID, ACTUAL_VALUE, MAX_VALUE) values (202, 'Approved', 11921353, 2, 100, 5, 30);
insert into DASHBOARD_CRITERIA (ID, TITLE, BACKGROUND_COLOR_VALUE, ORDER_NUMBER, DASHBOARD_CELL_ID, ACTUAL_VALUE, MAX_VALUE) values (203, 'Cancelled', 16755884, 3, 100, 17, 30);
我假设此查询给出了(单元格数 * 小部件数)。我的问题是为什么?我认为 hibernate 应该自动加入 child ,不是吗?我做错了什么或者可能是什么原因?
HQL 查询:
SELECT this_.ID AS ID1_1_1_,
this_.COLUMN_POSITION AS COLUMN_P2_1_1_,
this_.COLUMN_WEIGHT AS COLUMN_W3_1_1_,
this_.DASHBOARD_BOX_ID AS DASHBOAR5_1_1_,
this_.ROW_POSITION AS ROW_POSI4_1_1_,
dashboardw2_.DASHBOARD_CELL_ID AS DASHBOAR6_3_3_,
dashboardw2_.ID AS ID1_3_3_,
dashboardw2_.ID AS ID1_3_0_,
dashboardw2_.BACKGROUND_COLOR_VALUE AS BACKGROU2_3_0_,
dashboardw2_.DASHBOARD_CELL_ID AS DASHBOAR6_3_0_,
dashboardw2_.ORDER_NUMBER AS ORDER_NU3_3_0_,
dashboardw2_.TITLE AS TITLE4_3_0_,
dashboardw2_.widgetType AS widgetTy5_3_0_,
dashboardw2_.MAX_VALUE AS MAX_VALU1_2_0_,
dashboardw2_.ACTUAL_VALUE AS ACTUAL_V2_2_0_,
dashboardw2_.clazz_ AS clazz_0_
FROM DASHBOARD_CELL this_
LEFT OUTER JOIN
(SELECT ID,
BACKGROUND_COLOR_VALUE,
ORDER_NUMBER,
TITLE,
widgetType,
DASHBOARD_CELL_ID,
MAX_VALUE,
ACTUAL_VALUE,
1 AS clazz_
FROM DASHBOARD_CRITERIA) dashboardw2_ ON this_.ID=dashboardw2_.DASHBOARD_CELL_ID
WHERE this_.DASHBOARD_BOX_ID=?
我从 H2 转移到 postgresql。我执行了查询,结果似乎是正确的——我收到了 4 个链接到一个单元格的小部件。这可能是 hibernate 5 中的一个错误,我有多个相同的对象 4 次?
最佳答案
它按设计工作。就像在 HQL/JPQL 中,您需要使用 distinct
,在 Criteria 中,您需要
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
关于java - 具有 hibernate 标准的 hibernate 继承(TABLE_PER_CLASS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634474/
什么是 hibernate 和n- hibernate ?我可以在 Visual Studio 2008 中使用它进行 C# Web 应用程序开发吗?请给我建议...我是 asp.net Web 应用
我有一个不系统地发生的异常(exception)。 我试图通过在每次迭代中刷新和清理 session 来解决此问题,但没有成功。 [quartzScheduler_Worker-7] ERROR jd
使用 Hibernate 在数据库中存储 IP 地址的最佳类型是什么? 我虽然是 Byte[] 或 String,但有没有更好的方法,或者你用什么? @Column(name = "range_fr
我正在尝试制定一个公式来选择用户个人资料的用户友好名称。它选择名字 + ' ' + 姓氏 如果其中至少有一个不为空且不为空(包含非空白字符),否则选择 短名称 (条件相同),最后,如果 短名称 为空或
在hibernate中,是否可以将鉴别器作为一个实体?例如,如果我将 Department 作为基类,将 AdminDepartment 和 ProcessingDepartment 作为子类。 De
我只想从表中获取一些列值。因此,我已经使用投影来实现这一目标。该代码有效,但我认为它无效。 我的问题是当我使用ProjectionsList并将标准条件列表设置为ArrayList时-Bulletin
你好: 我对 hibernate 缓存缓存的内容感到困惑。 从文档中,我知道 hibernate 中有缓存类型。 一级 :交易级别。 似乎要被 session 持久化的实体被缓存在这里。 二级缓存 :
我遇到了一个情况: save或update hibernate 的目标表中的某些数据 在目标表上有一个触发器,该触发器将在目标表的insert或update操作之前执行 由 hibernate 将此记
我有一个名为 Master_Info_tbl 的表。它是一个查询表: 这是该表的代码: @Entity @Table(name="MASTER_INFO_T") public class Code
我想知道如何在 Hibernate 查询语言中使用日期文字。我在我的 JPA 项目中做了如下操作(作为 Eclipselink 提供者)并且它工作正常。 SELECT m FROM Me m WHER
@Entity public class Troop { @OneToMany(mappedBy="troop") public Set getSoldiers() { ...
我正在尝试使用 hibernate 查询删除表 'user_role' 中的所有行。但每次我都会出错。有人可以帮我吗。 DaoImpl @Override public void deleteAll(
不是将数据库操作分散在四个 (osgi) 包中,而是在那里做略有不同的事情。我想创建一个负责所有持久性问题的(简单的)OSGi 包。我觉得这并不像听起来那么简单,因为“每个包都有独特的类加载器”。 因
这就是我使用生成器的方式: private Integer id; 我看到的行为是: 创建第一个对象 hibernate 分配 id = 1 删除该对象 关闭服务
对象级别的实体和值类型有什么区别。我知道实体将有一个 id 但值不会,但为什么我们需要不同的方法来映射实体与值类型? 这样做是为了让hibernate可以对值类型应用任何优化吗? 最佳答案 一个实体已
我正在使用 HibernateTemplate.findByCriteria 方法进行一些查询。现在我想在标准上创建一些 SQL 限制,比如 criteria.add(Restrictions.sql
所以我有以下代码: Query query = session.createQuery("from Weather"); List list = query.list();
如何使用Hibernate映射具有多个实体的 View ? 问候, 混沌 最佳答案 请参见Hibernate文档中第5.1.3节“类”,紧接在“Id”节之前: There is no differen
据我所知,Hibernate 有两种类型的实现 JPA的实现(2)(@Entity,@Table注解) 扩展到旧的(传统的) hibernate (没有 JPA),使用 HSQL 查询,没有注释 如果
我需要一个将条目存储为键值对的集合(因此我可以通过键查找值),但我需要一个允许多个值使用 hibernate 共享同一个键的集合 最佳答案 一个键具有多个值的映射称为多映射 - 在 Apache 公共
我是一名优秀的程序员,十分优秀!