我能够使用Spring Data JPA中的@OneToOne使用主键关系连接两个实体Employee和Department并实现了这个结果,但是我不知道如何将where子句应用到我的需求中。下面是查询
select * from
Employee e1,
Department d1
Where e1.emp_id = d1.dep_id
And d1.crtn_time between to_date('08-NOV-2017 00:00', 'DD-MON-YYYY hh24:mi')
And to_date('08-NOV-2017 20:00', 'DD-MON-YYYY hh24:mi')
And e1.EMP_CODE='10' and e1.Desg='Clerk'
@Transactional(readOnly = true, transactionManager = "empDataTxnManager")
public interface EmpRepository extends JpaRepository<Employee, Long> {
}
员工:实体
@Entity
@Table(name = "Employee")
public class Employee {
@Id
@Column(name = "emp_id")
private Integer id;
@Column(name = "Emp_Code")
private String empCode;
@Column(name = "Desg")
private String desg;
@OneToOne(fetch=FetchType.LAZY,
cascade=CascadeType.ALL,
mappedBy="emp")
private Department department;
---- getters & setters omitted
部门实体
@Entity
@Table(name = "Department")
public class Department {
@Id
@Column(name = "dep_id")
private Integer id;
@Column(name = "crtn_time")
private String crtnTime;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "emp_id")
private Employee emp;
----getters & setters omitted
我的问题是如何在Repository类中的where子句之后应用其余的'AND'条件。类似于在存储库或服务类中编写的任何QueryByMethod(or)条件。
请建议是否有任何现有的例子可以参考以达到此要求
谢谢
您可以在存储库上执行以下操作:
public class YourRepo extends Serializable{
...
public List<Entity> findEntities( Type parameter ) {
List<Entity> resultList = new ArrayList<Entity>();
Entity e;
String sqlQuery = buildDynamicQuery(); // Build your complex where
TypedQuery<Object[]> q = getEntityManager().createNamedQuery( sqlQuery , Object[].class ); //Extract custom info from both tables.
q.setParameter( "parameterName", parameter );
for ( Object[] element : q.getResultList() ) {
e= new Entity();
e.setAtribute1( elemento[0].toString() );
e.setAtribute2( elemento[1].toString() );
e.setAtribute3( elemento[3].toString() );
resultList .add(e);
}
return resultList;
}
}
private String buildDynamicQuery( HistoricoGIDFiltro filtroBusqueda ) {
String sqlQuery = "SELECT filed1, field2, field3 ... FROM Employee e1,
Department d1 WHERE e1.emp_id = d1.dep_id ";
if ( look if it has an employ code ) {
sqlQuery += " AND e1.EMP_CODE='10' ";
}
return sqlQuery;
}
使用上面的代码,您可以创建自定义查询,并从不同的表中提取自定义信息。
我一直在为下面的问题寻找答案,到目前为止什么也没有找到。
另一个表是Department表,包含以下列: 下面是表值的示例 为了返回带有状态标签的员工信息,我们需要执行连接: Employee.java Department.java 然后是存储库(DAO):
我正在努力使用jpa Crudepository接口连接两个实体模型。我不知道如何映射两个实体模型并在@query注释中编写查询。这些是我的实体类。我想执行这个查询“从taxi\u driver\u映射中选择dppd.payment\u plan\u id,dppd.attribute\u value,dppd.attribute\u id作为tdm加入driver\u payment\u pla
我使用的是Sprind JPA、Spring 3.1.2(将来是3.2.3)、Hibernate 4.1 final。我是Sprind Data JPA的新手。我有两个表Release_date_type和Cache_media,它们的实体如下: releaseAirdate.java 我不知道如何映射实体。我尝试了很多事情,但没有运气。任何帮助都很感激。
我的应用程序有250多个表,每个表都有ID和name列。我正在尝试用Hibernate5+将我们的应用程序从Hibernate3迁移到Spring-JPA4.3。 在当前的hibernate层中,我有(选项1): 因此,如何在一个JPA存储库中执行以下操作:
另一个实体是: 我想编写一个接口,例如