Spring boot 未找到SpringBoot JPA的任何属性
我在运行应用程序时遇到这个错误,我不明白为什么。。我在网上找到了信息,但不知道怎么了。谢谢你的帮助 2)关于这方面的另一个问题,我是否应该提出:Spring boot 未找到SpringBoot JPA的任何属性,spring-boot,spring-data-jpa,entity,Spring Boot,Spring Data Jpa,Entity,我在运行应用程序时遇到这个错误,我不明白为什么。。我在网上找到了信息,但不知道怎么了。谢谢你的帮助 2)关于这方面的另一个问题,我是否应该提出: List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Namespace id_namespace, Service id_service); Or List<HistoriqueDeploiement> findByIdNamespaceAndIdService(I
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Namespace id_namespace, Service id_service);
Or
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Integer id_namespace, Integer id_service);
实体:
@Entity
@Table(name = "historiquedeploiement")
@Data
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
@AllArgsConstructor
public class HistoriqueDeploiement extends AuditModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", nullable=false, unique=true)
private Integer id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "id_namespace", nullable = false)
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
@JsonIdentityReference(alwaysAsId=true)
@JsonProperty("id_namespace")
private Namespace namespace;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "id_service", nullable = false)
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
@JsonIdentityReference(alwaysAsId=true)
@JsonProperty("id_service")
private Service service;
@NotEmpty(message = "Le GitCommit ne peut être vide")
@Size(max = 255)
private String gitCommit;
@NotEmpty(message = "Le TagVersion ne peut être vide")
@Size(max = 100)
private String tagVersion;
@NotEmpty(message = "Le Actionby ne peut être vide")
@Size(max = 255)
private String actionBy;
}
名称空间实体(与服务相同)
@实体
@表(name=“名称空间”)
@资料
@EqualsAndHashCode(callSuper=false)
@诺尔格构装师
@AllArgsConstructor
公共类命名空间扩展了AuditModel{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”,nullable=false,unique=true)
私有整数id;
@空空如也
@尺寸(最大值=100)
@列(唯一=真)
私有字符串名称空间;
@OneToMany(mappedBy=“namespace”,cascade=CascadeType.ALL,orphan=true)
private List historyDeployments=new ArrayList();
公共无效添加历史开发(历史开发历史开发){
添加(历史开发);
setNamespace(this);
}
公共无效删除历史开发(历史开发历史开发){
历史开发。移除(历史开发);
setNamespace(null);
}
}
回购协议,我不明白我做错了什么:
...
@Repository
public interface HistoriqueDeploiementRepository extends JpaRepository<HistoriqueDeploiement, Integer> {
List<HistoriqueDeploiement> findAll();
List<HistoriqueDeploiement> findByIdNamespace(Integer id);
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Namespace id_namespace, Service id_service);
List<HistoriqueDeploiement> findByIdNamespaceAndLogCreatedAtBetween(Namespace id_namespace, Date datedebut, Date datefin);
List<HistoriqueDeploiement> findByIdNamespaceAndLogCreatedAt(Namespace id_namespace, Date date);
}
。。。
@存储库
公共接口HistoryQueeDevelopmentRepository扩展了JpaRepository{
列出findAll();
列出findByIdNamespace(整数id);
列出FindByidNamespaceandDService(名称空间id\u名称空间,服务id\u服务);
列出findByIdNamespaceAndLogCreatedAtBetween(名称空间id_名称空间,Date DateFirst,Date datefin);
列出findbyidnamespace和logcreatedat(名称空间id\u名称空间,日期);
}
好的,我查看了您的问题,以下是我的发现。分配给存储库接口方法参数的类型错误
您希望获得名称空间和服务实体具有特定ID的HistoryQueeDevelopment实体的列表。请注意,命名空间和服务实体的ID是整数类型。因此,为了解决这个问题,您可以简单地重写您的方法,如下所示:
@Repository
public interface HistoriqueDeploiementRepository extends
JpaRepository<HistoriqueDeploiement, Integer> {
List<HistoriqueDeploiement> findAll();
List<HistoriqueDeploiement> findByNamespaceId(Integer id);
List<HistoriqueDeploiement> findByNamespaceIdAndServiceId(Integer id_namespace, Integer id_service);
List<HistoriqueDeploiement> findByNamespaceIdAndLogCreatedAtBetween(Integer id_namespace, Date datedebut, Date datefin);
List<HistoriqueDeploiement> findByNamespaceIdAndLogCreatedAt(Integer id_namespace, Date date);
}
@存储库
公共接口历史开发存储扩展
JpaRepository{
列出findAll();
列出FindBynameSpace id(整数id);
列出findByNamespaceIdAndServiceId(整数id\u名称空间,整数id\u服务);
列出findByNamespaceIdAndLogCreatedAtBetween(整数id_名称空间,Date DateFirst,Date datefin);
列出findByNamespaceIdAndLogCreatedAt(整数id\u名称空间,日期);
}
注意,这里的主要变化是我们将名称空间和服务类型替换为Integer类型,Integer类型是它们ID的实际类型您是否介意编写一个希望repository方法执行的SQL查询?也就是说,在我看来,您需要一个HistoryQueeDevelopment实体的列表,这样相关的名称空间和服务就有了一些属性。如果确实是这样,那么您需要一些连接,而且您不太可能通过Spring数据实现这一点DSLI使用映射和DTO来获得我需要的值(我理解您的说法)。但实际上问题在于我的回购协议:(这是我的第一次测试,但我有:
没有找到Integer类型的属性名称空间
我很快忘记了对方法名称进行更改,但只更改了参数。我已经编辑了我的答案,现在应该是workApp正在运行,但我不明白为什么名称空间ID
而不是IdNamespace??谢谢!如果你您将名称空间的实例命名为Namespace如何访问其id属性?您将使用Namespace.getId(),但由于方法名称不能包含点和大括号,因此约定将其作为NamespaceId写入
...
@Repository
public interface HistoriqueDeploiementRepository extends JpaRepository<HistoriqueDeploiement, Integer> {
List<HistoriqueDeploiement> findAll();
List<HistoriqueDeploiement> findByIdNamespace(Integer id);
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Namespace id_namespace, Service id_service);
List<HistoriqueDeploiement> findByIdNamespaceAndLogCreatedAtBetween(Namespace id_namespace, Date datedebut, Date datefin);
List<HistoriqueDeploiement> findByIdNamespaceAndLogCreatedAt(Namespace id_namespace, Date date);
}
@Repository
public interface HistoriqueDeploiementRepository extends
JpaRepository<HistoriqueDeploiement, Integer> {
List<HistoriqueDeploiement> findAll();
List<HistoriqueDeploiement> findByNamespaceId(Integer id);
List<HistoriqueDeploiement> findByNamespaceIdAndServiceId(Integer id_namespace, Integer id_service);
List<HistoriqueDeploiement> findByNamespaceIdAndLogCreatedAtBetween(Integer id_namespace, Date datedebut, Date datefin);
List<HistoriqueDeploiement> findByNamespaceIdAndLogCreatedAt(Integer id_namespace, Date date);
}