SELECT DISTINCT E.* FROM EMP E, EMP_ASSIGN EA
WHERE
E.ID = EA.EMP_ID AND (EA.SUB_COMP_ID IN (ACTUAL VALUES)
OR EA.BRANCH_ID IN (ACTUAL VALUES)
OR EA.DESG_ID IN (ACTUAL VALUES))
public class Employee{
private String id;
private String firstName;
private String lastName;
private Set<EmployeeAssignment> employeeAssignments;
//getters and setters
}
<hibernate-mapping>
<class name = "Employee" table="EMP" >
<id name="id" column="ID"/>
<property name="firstName" column="FIRST_NAME"/>
<property name="lastName" column="LAST_NAME"/>
<set name="employeeAssignments" table="EMP_ASSIGN" inverse="true" fetch="join" cascade="save-update" lazy="true"
where="trunc(SYSDATE) BETWEEN strt_dt and end_dt">
<key>
<column name="EMP_ID" not null="true"/>
</key>
<one-to-many notfound="ignore" class="com.someorganization.entity.EmployeeAssignment"/>
</set>
</class>
</hibernate-mapping>
CREATE TABLE EMP(
ID VARCHAR(20) PRIMARY KEY,
FIRST_NAME VARCHAR(30) NOT NULL,
LAST_NAME VARCHAR(30) NOT NULL
);
public class EmployeeAssignment{
private String id;
private String employeeId;
private Date startDate;
private Date endDate;
private SubCompany company;
private Branch branch;
private Designation designation;
//getters and setters
}
<hibernate-mapping>
<class name = "EmployeeAssignment" table="EMP_ASSIGN" >
<id name="id" column="ID"/>
<property name="employeeId" column="EMP_ID"/>
<property name="startDate" column="STRT_DATE"/>
<property name="endDate" column="END_DATE"/>
<many-to-one name="subCompany" lazy="false" class="com.someorganization.entity.SubCompany">
<column name="SUB_COMP_ID" not-null="false"/>
</many-to-one>
<many-to-one name="branch" lazy="false" class="com.someorganization.entity.Branch">
<column name="BRANCH_ID" not-null="false"/>
</many-to-one>
<many-to-one name="designation" lazy="false" class "com.someorganization.entity.Designation">
<column name="DESG_ID" not-null="false"/>
</many-to-one>
</class>
</hibernate-mapping>
CREATE TABLE EMP_ASSIGN(
ID VARCHAR(20) PRIMARY KEY,
EMP_ID VARCHAR(20) NOT NULL,
STRT_DATE DATE,
END_DATE DATE,
SUB_COMP_ID VARCHAR(20) NOT NULL,
BRANCH_ID VARCHAR(20) NOT NULL,
DESG_ID VARCHAR(20) NOT NULL
FOREIGN KEY(EMP_ID) REFERENCES EMP(ID),
FOREIGN KEY(SUB_COMP_ID) REFERENCES SUB_COMP(ID),
FOREIGN KEY(BRANCH_ID) REFERENCES BRANCH(ID),
FOREIGN KEY(DESG_ID) REFERENCES DESG(ID))
public class SubCompany{
private String id;
private String subCompanyName;
//getters and setters
}
subcompany.hbm.xml
<hibernate-mapping>
<class name = "SubCompany" table="SUB_COMP" >
<id name="id" column="ID"/>
<property name="subCompanyName" column="COMPANY_NAME"/>
</class>
</hibernate-mapping>
子单位表
CREATE TABLE SUB_COMP(
ID VARCHAR(20) PRIMARY KEY,
COMPANY_NAME VARCHAR(30) NOT NULL
);
branch.java
public class Branch{
private String id;
private String branchName;
//getters and setters
}
<hibernate-mapping>
<class name = "Branch" table="BRANCH">
<id name="id" column="ID"/>
<property name="branchName" column="BRANCH_NAME"/>
</class>
</hibernate-mapping>
CREATE TABLE BRANCH(
ID VARCHAR(20) PRIMARY KEY,
BRANCH_NAME VARCHAR(30) NOT NULL
);
public class Designation{
private string id;
private String designationName;
//getters and setters
}
<hibernate-mapping>
<class name = "Designation" table="DESG">
<id name="id" column="ID"/>
<property name="designationName" column="DESG_NAME"/>
</class>
</hibernate-mapping>
指定表
CREATE TABLE DESG(
ID VARCHAR(20) PRIMARY KEY,
DESG_NAME VARCHAR(30) NOT NULL
);
我需要帮助编写条件查询使用提供的SQL。
Criteria criteria = session.createCriteria(Employee.class)
.createAlias(“employeeAssignments.id” , “emp_id”)
.createAlias(“employeeAssignments.subCompany” , “subCompany”)
.createAlias(“subCompany.id” , “subCompany_id”)
.createAlias(“employeeAssignments.branch” , “branch”)
.createAlias(“branch.id” , “branch_id”)
.createAlias(“employeeAssignments.designation” , “designation”)
.createAlias(“designation.id” , “designation_id”);
Criterion em_assig_id = Resitriction.eq("emp_id”, 601);
Criterion id = Restriction.eq(“id”, 601);
Disjunction or = Restrictions.disjunction();
Or.add(Restriction.in(“subCompany_id”, new String[] {“”,””,””} ));
Or.add(Restriction.in(“branch_id”, new String[] {“”,””,””} ));
Or.add(Restriction.in(“designation_id”, new String[] {“”,””,””} ));
Criterion final = Restriction.and(or, Restriction.and(em_assig_id, id));
criteria.add(final);
问题内容: 我有以下实体 以下是我的行动 我想获取具有特定操作集的规则列表,我正在尝试执行此操作 但是获取org.hibernate.MappingException:集合不是一个关联:异常。 编辑 因此,在jbrookover的指导下,我尝试为Action命名为RuleAction的包装器类,并能够建立一个oneToMany关系,此外,我还如下修改了查询 但是,这将返回所有具有EMAIL或POS
我试图比较Hibernate条件和命名查询的性能。我知道这一切都取决于实际的查询本身,最后一个字取决于它们在运行时如何配置文件。尽管如此,试图理清每一个都有什么。 我试图将Q分为两个部分&寻找两者的验证/更正: 命名查询与HQL相比具有相同的优势--查询在启动时被解析一次。然后从应用程序中任何必要的地方执行。 第2部分--比较两者: 所以在这张图里, 提亚。
问题内容: SELECT supplier_id FROM suppliers UNION ALL 我只是在查询的“ UNION ALL”子句上方和查询的“ UNION ALL”子句上方创建两个条件。 但是我的问题是我如何在条件中执行UNION ALL子句?提前致谢。 问题答案: 我认为hibernate不支持条件,但是您可以使用两个条件查询来获得预期的结果:
我需要将这个sql查询转换为hibernate条件,请大家帮忙。 按名称顺序按应用描述限制3从设备组中选择名称,计数(*)为应用
问题内容: 我不确定如何描述这个问题,所以我认为举个例子是问我问题的最好方法: 我有两个表具有多对多关系: 驾驶执照<-> LicenceClass LicenceClass是“汽车”,“摩托车”和“中型刚性”之类的东西。 使用Hibernate Criteria,如何找到同时具有“汽车”和“摩托车” LicenceClasses的所有许可证? 2008年12月11日更新我发现可以使用自定义Res
我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。