当前位置: 首页 > 知识库问答 >
问题:

在@Embeddable类中使用主键的Spring JPA

百里京
2023-03-14

在我的应用程序中,我有一个场景,根据给定的输入代码和日期从实体中获取数据。代码和日期的组合将是唯一的,并将返回单个记录。

class JpaEntity
{
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private id ;
        private String code;
        private Date date;
        private title;

        //Getters and Setters

}
class JpaEntity
{
        private String title;
        
        //Getters and setters
        
        @EmbededId
        private EntityId entityID
        
        @Embedable
        public static class EntityId implements Serializable{
        
            @Id
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private id ;
            private String code;
            private Date date;
            
            //Getters and Setters
        
        }
}
public interface PersistentDAO extends JpaRepository<JpaEntity,String> {
{
    @Query("SELECT cal FROM JpaCalendar cal" + " WHERE cal.calendarId.currencyCode=:currencyCode "
            + " AND cal.calendarId.date=:date")
    Optional<JpaCalendar> findById(String currencyCode, Date date);
    JpaEntity findByID(String code,Date date)

}

请建议。

共有1个答案

东郭赞
2023-03-14

使用@embedded&@embeddable,不要在类内使用静态类

class JpaEntity
{
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private id ;
        @Embedded
        private CodeDate codeDate;
        private title;
}
@Embeddable
class CodeDate {
        private String code;
        private Date date;
}

您可以使用Jpa方法命名查询并创建CodeDate对象调用,如下所示

public interface PersistentDAO extends JpaRepository<JpaEntity,String> {
{
    JpaEntity findByCodeDate(CodeDate codeDate);
}
 类似资料:
  • 问题内容: 我有班钱是@Embeddable 当我在实体中多次使用它时,一切正常。例如 上面的代码完美地工作。 现在,当我有另一个@Embeddable想要在其中包含Money实例并且该@Embeddable被实体多次使用时,就会出现问题。例: 可嵌入 public class ReportCostValues implements Serializable { 实体 public class R

  • 问题内容: 我知道String类的hashCode()方法 不能 保证为不同的String-s生成唯一的哈希码。我看到了很多将String键放入HashMap-s的用法(使用默认的String hashCode()方法)。如果地图使用真正不同的String键替换了先前放置在地图上的HashMap条目,那么很多这种用法可能会导致重大的应用程序问题。 在String.hashCode()对于不同的St

  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都将数据插入到单个表中,并使用两个不同的类来做到这一点。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和hibernate关系。 问题答案: Hibernate 1中有两种对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以

  • 下面是的代码片段,它引用了col1和col2 这种情况有什么解决办法吗? parentPK.java java转换为@embedbable,扩展了parentpk.java 在上面,映射col1和col2是从parentpk.java继承来的,如果在xml映射中的某个ownerclass.java中使用ChildPk作为外键,但在带注释的映射中不能使用,则可以访问它们。 我不能改变我的类的结构,因

  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都是在单个表中插入数据,并使用两个不同的类来完成此操作。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和休眠关系。 问题答案: Hibernate 1中有两种类型的对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以为例。如

  • 问题内容: 所需结果: 在MySQL中具有重音敏感的主键。 我有一个独特的单词表,所以我将单词本身用作主键(顺便说一句,如果有人可以给我一些建议,我不知道它是否是一个好的设计/实践)。 我需要使该字段具有重音(为什么不区分大小写),因为它必须区分法语动词“ demander”的两个不同的变体,例如和。我在数据库中存储重音词没有任何问题。我只是无法插入没有重音时相同的两个重音字符字符串。 错误 :