私は春のブートとバネのデータ(CrudRepository)を使ってフォームで渡すエンティティを永続化していますが、ProductとStatutProduit(Produitエンティティの外部キーとしてのidStatutProduit)の間にManyToOneの関係があります。他のオブジェクトに依存するオブジェクトを持っていることをコントローラーに伝えてください。そうでなければ、statusProductをロードするコンボボックスを使って、確実に製品クラスのためにthymeleafを使ってwフォームを作成する必要があります。CrudRepository(Spring Dataとthymeleaf)を使用してManyToOne関係を実現するにはどうすればよいですか?
Produitクラス(:
public class Produits implements Serializable {
private static final long serialVersionUID = 1L;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Id
@Basic(optional = false)
@NotNull
@Column(name = "ID_PRODUIT")
private BigDecimal idProduit;
@Column(name = "ID_OPERATEUR")
private BigInteger idOperateur;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "CODE")
private String code;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "LIBELLE")
private String libelle;
@Column(name = "POIDS")
private BigInteger poids;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 5)
@Column(name = "INDICE")
private String indice;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 10)
@Column(name = "CREE_PAR")
private String creePar;
@Column(name = "DATE_CREATION")
@Temporal(TemporalType.TIMESTAMP)
private Date dateCreation;
@Size(max = 10)
@Column(name = "MAJ_PAR")
private String majPar;
@Column(name = "DATE_MAJ")
@Temporal(TemporalType.TIMESTAMP)
private Date dateMaj;
@JoinColumn(name = "ID_STATUT_PRODUIT", referencedColumnName = "ID_STATUT_PRODUIT")
@ManyToOne(optional = false)
private StatutProduits idStatutProduit;
public Produits(BigDecimal idProduit, String code, String libelle,
String indice, String creePar) {
this.idProduit = idProduit;
this.code = code;
this.libelle = libelle;
this.indice = indice;
this.creePar = creePar;
}
StatusProductクラス:
public class StatutProduits implements Serializable {
private static final long serialVersionUID = 1L;
fields consider using these annotations to enforce field validation
@Id
@Basic(optional = false)
@NotNull
@Column(name = "ID_STATUT_PRODUIT")
private BigDecimal idStatutProduit;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "CODE")
private String code;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "LIBELLE")
private String libelle;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 10)
@Column(name = "CREE_PAR")
private String creePar;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Column(name = "DATE_CREATION")
@Temporal(TemporalType.TIMESTAMP)
private Date dateCreation;
@Size(max = 10)
@Column(name = "MAJ_PAR")
private String majPar;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Column(name = "DATE_MAJ")
@Temporal(TemporalType.TIMESTAMP)
private Date dateMaj;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idStatutProduit")
private List<Produits> produitsList;
public StatutProduits() {
}
public StatutProduits(BigDecimal idStatutProduit) {
this.idStatutProduit = idStatutProduit;
}
public StatutProduits(BigDecimal idStatutProduit, String code, String libelle, String creePar) {
this.idStatutProduit = idStatutProduit;
this.code = code;
this.libelle = libelle;
this.creePar = creePar;
}
public BigDecimal getIdStatutProduit() {
return idStatutProduit;
}
public void setIdStatutProduit(BigDecimal idStatutProduit) {
this.idStatutProduit = idStatutProduit;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getLibelle() {
return libelle;
}
public void setLibelle(String libelle) {
this.libelle = libelle;
}
public String getCreePar() {
return creePar;
}
public void setCreePar(String creePar) {
this.creePar = creePar;
}
public Date getDateCreation() {
return dateCreation;
}
public void setDateCreation(Date dateCreation) {
this.dateCreation = dateCreation;
}
public String getMajPar() {
return majPar;
}
public void setMajPar(String majPar) {
this.majPar = majPar;
}
public Date getDateMaj() {
return dateMaj;
}
public void setDateMaj(Date dateMaj) {
this.dateMaj = dateMaj;
}
public List<Produits> getProduitsList() {
return produitsList;
}
public void setProduitsList(List<Produits> produitsList) {
this.produitsList = produitsList;
}
ProduitServiceクラス:
@Service
public class ProduitService {
@Autowired
private ProduitRepository produitrepository ;
public void addProduit(Produits p) {
}
}
は'すべてのフィールドに、私は 'NamingStrategy'を構成します。 'Hibernate'を使っていますか? –
はい、これは、休止状態が問題なく動作している問題ではありません。 –
私はそれが話題ではないことを知っています。しかし、それは(https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/howto-data-access.html# [設定Hibernateは戦略を命名]あなたのクラスの多くは整然となり、時間を節約できますhowto-configure-hibernate-naming-strategy)を参照してください。 は 'COLUMN' @ n回 –