没有 属性 找到 Spring Boot JPA
No property found SpringBoot JPA
我在 运行 应用程序时遇到了这个错误,我不明白为什么..我在网上找到了信息,但不明白哪里出了问题。感谢您的帮助。
2 ) 关于这个的另一个问题,我应该说:
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Namespace id_namespace, Service id_service);
Or
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Integer id_namespace, Integer id_service);
错误:
Error creating bean with name 'checkConfigDeploiementRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.example.jpa.repository.CheckConfigDeploiementRepository.findByIdNamespaceAndIdService(com.example.jpa.model.Namespace,com.example.jpa.model.Service)! No property namespace found for type Integer! Traversed path: CheckConfigDeploiement.id.
实体:
@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;
}
NamespaceEntity(与服务相同..)
@Entity
@Table(name = "namespace")
@Data
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
@AllArgsConstructor
public class Namespace extends AuditModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", nullable=false, unique=true)
private Integer id;
@NotEmpty
@Size(max = 100)
@Column(unique = true)
private String namespace;
@OneToMany(mappedBy = "namespace", cascade = CascadeType.ALL, orphanRemoval = true)
private List<HistoriqueDeploiement> historiquedeploiements = new ArrayList<>();
public void addHistoriqueDeploiement(HistoriqueDeploiement historiquedeploiement) {
historiquedeploiements.add(historiquedeploiement);
historiquedeploiement.setNamespace(this);
}
public void removeHistoriqueDeploiement(HistoriqueDeploiement historiquedeploiement) {
historiquedeploiements.remove(historiquedeploiement);
historiquedeploiement.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);
}
好的,我查看了您的问题,这就是我的发现。您分配给存储库接口方法参数的类型错误。
您正在寻求获取 HistoriqueDeploiement 实体的列表,这些实体的名称空间和服务实体具有特定 ID。请注意,Namespace 和 Service 实体的 ID 是 Integer 类型。所以为了解决你可以简单地重写你的方法如下:
@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);
}
请注意,这里的主要变化是我们用 Integer 类型替换了 Namespace 和 Service 类型,这是它们 ID 的实际类型
我在 运行 应用程序时遇到了这个错误,我不明白为什么..我在网上找到了信息,但不明白哪里出了问题。感谢您的帮助。
2 ) 关于这个的另一个问题,我应该说:
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Namespace id_namespace, Service id_service);
Or
List<HistoriqueDeploiement> findByIdNamespaceAndIdService(Integer id_namespace, Integer id_service);
错误:
Error creating bean with name 'checkConfigDeploiementRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.example.jpa.repository.CheckConfigDeploiementRepository.findByIdNamespaceAndIdService(com.example.jpa.model.Namespace,com.example.jpa.model.Service)! No property namespace found for type Integer! Traversed path: CheckConfigDeploiement.id.
实体:
@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;
}
NamespaceEntity(与服务相同..)
@Entity
@Table(name = "namespace")
@Data
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
@AllArgsConstructor
public class Namespace extends AuditModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", nullable=false, unique=true)
private Integer id;
@NotEmpty
@Size(max = 100)
@Column(unique = true)
private String namespace;
@OneToMany(mappedBy = "namespace", cascade = CascadeType.ALL, orphanRemoval = true)
private List<HistoriqueDeploiement> historiquedeploiements = new ArrayList<>();
public void addHistoriqueDeploiement(HistoriqueDeploiement historiquedeploiement) {
historiquedeploiements.add(historiquedeploiement);
historiquedeploiement.setNamespace(this);
}
public void removeHistoriqueDeploiement(HistoriqueDeploiement historiquedeploiement) {
historiquedeploiements.remove(historiquedeploiement);
historiquedeploiement.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);
}
好的,我查看了您的问题,这就是我的发现。您分配给存储库接口方法参数的类型错误。
您正在寻求获取 HistoriqueDeploiement 实体的列表,这些实体的名称空间和服务实体具有特定 ID。请注意,Namespace 和 Service 实体的 ID 是 Integer 类型。所以为了解决你可以简单地重写你的方法如下:
@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);
}
请注意,这里的主要变化是我们用 Integer 类型替换了 Namespace 和 Service 类型,这是它们 ID 的实际类型