我有2个表与一对多的关系如下:
我的实体类和hbm配置如下:
AuditDetail.java
public class AuditDetail implements Serializable {
private static final long serialVersionUID = 1L;
private String auditId;
private Timestamp startTime;
private Timestamp endTime;
Set auditParameterDataSet;
public Set getAuditParameterDataSet() {
return auditParameterDataSet;
}
public void setAuditParameterDataSet(Set auditParameterDataSet) {
this.auditParameterDataSet = auditParameterDataSet;
}
public String getAuditId() {
return auditId;
}
public void setAuditId(String auditId) {
this.auditId = auditId;
}
public void setStartTime(Timestamp startTime) {
this.startTime = startTime;
}
public Timestamp getEndTime() {
return endTime;
}
public void setEndTime(Timestamp endTime) {
this.endTime = endTime;
}
}
审核详细信息。hbm。xml
<hibernate-mapping>
<class name="com.test.AuditDetail" table="AUDITDETAIL" >
<id name="auditId" column="AUDITID" type="string" />
<property name="startTime" type="java.sql.Timestamp">
<column name="STARTTIME" sql-type="VARCHAR2(50)" />
</property>
<property name="endTime" type="java.sql.Timestamp">
<column name="ENDTIME" sql-type="VARCHAR2(50)" />
</property>
<set name="auditParameterDataSet" cascade="all,delete-orphan" lazy="true" inverse="true">
<key>
<column name="AUDITID"/>
</key>
<one-to-many class="com.test.AuditParameter" />
</set>
</class>
</hibernate-mapping>
AuditParameter。Java语言
public class AuditParameter {
private String auditId ;
private String parameterId;
private String fieldName ;
private AuditDetail auditDetail;
public String getAuditId() {
return auditId;
}
public void setAuditId(String auditId) {
this.auditId = auditId;
}
public String getParameterId() {
return parameterId;
}
public void setParameterId(String parameterId) {
this.parameterId = parameterId;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public AuditDetail auditDetail() {
return auditDetail;
}
public void setAuditDetail(AuditDetail auditDetail) {
this.auditDetail = auditDetail;
}
}
AuditParameter。hbm。xml
<hibernate-mapping>
<class name="com.test.AuditParameter" table="AUDITPARAMETER" >
<id name="parameterId" type="string">
<column name="PARAMETERID" sql-type="VARCHAR2(50)" />
</id>
<many-to-one name="auditDetail" class="com.test.AuditDetail" column="AUDITID" insert="false" update="false" lazy="false">
</many-to-one>
<property name="auditId" type="string">
<column name="AUDITID" sql-type="VARCHAR2(50)" not-null="false" />
</property>
<property name="fieldName" type="string">
<column name="FIELDNAME" sql-type="VARCHAR2(50)" />
</property>
</class>
</hibernate-mapping>
我的hql查询如下:
select a.auditId, a.startTime, a.endTime, a.auditParameterDataSet from AuditDetail a;
但当我执行此查询时,它会给我以下错误:
ORA-00936:缺少表达式
以下是我的查询触发的控制台输出。
select au0_.AUDITID as col_0_0_, au0_.STARTTIME as col_1_0_, au0_.ENDTIME as col_2_0_, . as col_3_0_
from AUDITDETAIL au0_ inner join AUDITPARAMETER auditparam4_ on au0_.AUDITID=auditparam4_.AUDITID
根据这个输出,我们可以看到Hibernate没有为a.audit参数数据集生成列名。为什么会这样?我哪里做错了?
您必须使用加入:-
HQL:-
select a.auditId, a.startTime, a.endTime, auditParameterDataSet from AuditDetail join a.auditParameterDataSet auditParameterDataSet;
标准:-
Criteria criteria = session.createCriteria(AuditDetail.class);
criteria.setFetchMode("auditParameterDataSet", FetchMode.EAGER);
问题内容: 我有这个查询 引发ORA-00936缺少表达式的allow查询有什么问题?任何人?任何帮助将不胜感激…在第一个顺序的开头处,列:80处引发错误: 问题答案: 您的查询可以大大简化。它具有诸如子查询的额外层和在子查询中不必要的东西。您想做什么就可以:
问题内容: 我收到以下查询的ORA:00936错误。请让我知道查询中的问题 问题答案: SELECT convert(DATE,r.created_dt)作为created_dt 问题在于错误使用了 CONVERT 函数。请参阅文档。 我猜您正在尝试转换数据类型,可以使用 TO_DATE 将字符串转换为日期。或者, TO_CHAR 反之亦然。
问题内容: 下面我正在创建表。 当我尝试更新数据库表时,这是下面的UPSERT_SQL查询,我总是在 获取java.sql.SQLException:ORA-00936:缺少表达式 。我检查了我的SQL,找不到找不到表达式的地方。下面的SQL有问题吗? 从下面开始,我执行该UPSERT_SQL语句。 问题答案: 是的,SQL有点问题,这是您在 FROM dual 之前写了一个逗号。这导致Oracl
问题内容: 我在Hibernate中具有以下一对一关系(可能为null): 我正在尝试使用HQL选择所有具有非空详细信息的实体: 但这会返回所有实体,无论详细信息是否为空。 那么正确的HQL是什么? 问题答案: 好的,我找到了解决方案:
问题内容: 我有桌子。与… 有关系。 类作者 课堂书 如何编写查询,以便能获得所有作者和那里的书,而且书名应以 我知道使用这样的查询, 我可以获取所有作者和那里的书,但是如何在书上注明条件? 问题答案: 我认为是这样的: 虽然不确定a.Book,也可能是a.Books,因为您的列名就是这样命名的。
我正在努力理解如何处理与JOOQ的一对多和多对多关系的Pojo。 我存储玩家创建的位置(一对多关系)。一个位置可以容纳多个可能访问它的其他玩家(多对多)。数据库布局可归结为以下内容: 在我的java应用程序中,所有这些信息都存储在一个pojo中。请注意,玩家和受邀玩家列表可以从应用程序中更新,也需要在数据库中更新: 我可以使用JOOQ的pojo映射将这三个记录映射到单个pojo吗?我可以使用这个p