Java Spring Boot 2使用OneTONE映射的自定义查询
我使用SpringBoot2和thymeleaf来显示来自现有Oracle 12数据库的数据 工作流实体是我希望显示的主要实体之一:Java Spring Boot 2使用OneTONE映射的自定义查询,java,spring-boot,spring-boot-jpa,Java,Spring Boot,Spring Boot Jpa,我使用SpringBoot2和thymeleaf来显示来自现有Oracle 12数据库的数据 工作流实体是我希望显示的主要实体之一: @Entity @Immutable @Table(name = "V_AV_WFPROC", schema="avuser") public class Workflow { @Id @Column(name = "proc_id") private Long id; private String name; @Colu
@Entity
@Immutable
@Table(name = "V_AV_WFPROC", schema="avuser")
public class Workflow {
@Id
@Column(name = "proc_id")
private Long id;
private String name;
@Column(name = "proc_ref")
private String procRef;
private String description;
@OneToOne(mappedBy = "workflow")
private WorkflowCategory workflowCategory;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public String getProcRef() {
return procRef;
}
public String getDescription() {
return description;
}
public WorkflowCategory getWorkflowCategory() {
return workflowCategory;
}
}
workflowCategory
保存有关工作流的一些信息,如工作流类型:
@Entity
@Immutable
@Table(name = "V_AV_WFPROC_CATEGORIES", schema = "avuser")
public class WorkflowCategory {
@Id
@Column(name = "cat_id")
private Long id;
private String name;
@OneToOne
@JoinColumn(name="proc_id", referencedColumnName = "proc_id")
private Workflow workflow;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public Workflow getWorkflow() {
return workflow;
}
我有一个工作流类别的自定义查询,因为只有一些信息对我很重要。我需要解码类别名称,因为我无法访问存储信息的表
@Repository
public interface WorkflowCategoryRepository extends CrudRepository<WorkflowCategory, String>{
@Query(value = "SELECT PROC_ID || CAT_ID AS CAT_ID, PROC_ID, DECODE(CAT_ID, 4, 'Request Workflow', 5, 'Approval Workflow', 6, 'Escalation Workflow', 7, 'Fulfillment Workflow', 51, 'Custom Tasks Workflow', '?') AS NAME FROM WorkflowCategory WHERE CAT_ID IN (4, 5, 6, 7, 51)",
nativeQuery = true)
public Iterable<WorkflowCategory> findAll();
}
当我从查询中删除解码部分时也会发生这种情况。您可以尝试使用@OneToOne注释上的以下属性吗 cascade=CascadeType.ALL和OrphanRemoving=true
然后我得到ORA-00904:“WORKFLOWCA0”.“NAME”:无效标识符
select WORKFLOWCA0.cat\u id为cat\u id1\u,WORKFLOWCA0.NAME为name2\u 11\u 1\u,WORKFLOWCA0.proc\u id为proc\u id3\u 11\u 1\u,workflow1\u.proc\u id为proc\u id1\u 10\u,workflow1\u.description为description为description为description2\u 10\u 10\u 0\u,WORKFLOWCA0,workflow1_u.proc_ref as proc_ref4_10_0_ufrom avuser.V_AV_WFPROC_ucategories workflowca0_u左外连接avuser.V_AV_WFPROC workflow1_0.proc_uid=workflow1_u.proc_uid,其中workflowca0_u.proc_uid=?
没有name属性,则出现与上述相同的错误。这意味着您正在查询表中不存在的内容。交叉检查列一次。是的,它仅在我在WorkflowCategoryRepository中创建的@Query
中可用,而不在表中。有没有办法设置用于映射的自定义查询?我现在通过创建自定义视图解决了这个问题,但我想知道如何使用@Query
进行映射。