java - Spring数据jpa中具有复合PK的表的 native 查询

标签 java spring hibernate jpa

我有两个 bean,一个是 @Embeddable,其中我有 PK 的组合。

@Embeddable
@JsonIgnoreProperties(ignoreUnknown = true)
public class PersonalInfoId implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name = "username", nullable = false)
    private String username;
    @JsonFormat(pattern = "yyyy-MM-dd")

    @Temporal(TemporalType.DATE)

    private Date end_date;

其他bean是@EmbeddedId,其中我有其他参数

    @Table(name = "tblemployee_personal_info0001")
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class tblemployee_personal_info0001 {

        @EmbeddedId

        private PersonalInfoId personalInfoId;
        private String emp_id;
        @JsonFormat(pattern = "yyyy-MM-dd")
        @Temporal(TemporalType.DATE)
        private Date start_date;
        private String last_changed_by;
        @Temporal(TemporalType.TIMESTAMP)
        private Date last_changed_date;
        private String emp_sub_group_key;
        private String emp_designation_key;

在存储库界面中,我想编写 native 查询。我尝试过的是

public interface PersonalInfoDataRepository extends JpaRepository<tblemployee_personal_info0001, PersonalInfoId> {
        List<tblemployee_personal_info0001> findByPersonalInfoIdUsername(String username);

    @Query("SELECT start_date, username FROM tblemployee_personal_info0001"
            + " p WHERE p.start_date=:start_date AND p.username=:userName")

    List<Object> find(@Param("start_date") Date start_date, @Param("userName") String userName);

我得到的异常是: 无法解析属性:用户名:com.pa.beans.tblemployee_personal_info0001

 How we can write query which will take parameter from both the class or beans?

如有任何帮助,我们将不胜感激。 提前致谢。

最佳答案

这里您没有使用 native SQL 查询。您可以使用 jpql 查询来传递 @EmbeddedId 字段personalInfoId:

@Query("SELECT p.start_date, p.personalInfoId.username FROM Tblemployee_personal_info0001 p WHERE ...")

(请尝试以大写字母开头并使用驼峰式命名风格:如TEmployeePersonalInfo)

如果有一天您想要它是原生的,您需要在 @Query 注释中对其进行定价:

@Query(nativeQuery = true, value = "SELECT...")

关于java - Spring数据jpa中具有复合PK的表的 native 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48406724/

相关文章:

java - `return value' 来自 Java 中的构造函数异常?

java - 404-在 Spring MVC 中找不到页面

java - 创建名称为 'mainController' 的 bean 时出错 : Unsatisfied dependency expressed through field 'userrep' ; nested exception is

java - 如何使用@Valid来验证局部变量?

java - 我如何在 bash 中设置 JAVA_HOME?

java - Hibernate : org. hibernate.QueryParameterException:无法找到命名参数

spring - spring可以提供作业队列这样的概念吗

java - 保存对象后外键为空

hibernate - 使用 Hibernate 将子类持久化为父类(super class)

java - 指向循环 TextView 和按钮