9 Haziran 2020 Salı

JHipster-7 (JDL ile ManyToMany ilişkili ekranlar oluşturma)

Merhaba,
bu yazımda sizlere jhipster ile jdl dosyasından ManyToMany ilişkili entity ve bu entity'nin CRUD ekranlarının nasıl oluşturulacağını paylaşacağım.

ilk olarak terminalden jhipster projenizin bulunduğu dizine gidin.

$ cd  hipster-angular/  

 

touch komuturyla içinde entity tanımlamalarını yapacağımız  many-to-many.jdl adında bir dosya oluşturun.

 $ touch many-to-many.jdl 

 

dosya içeriği aşağıdaki gibi olmalıdır.


entity Car {
name String required,
color String required,
year Integer required
}

entity Driver {
firstName String required,
lastName String required
}

relationship ManyToMany {
Car{driver} to Driver{car}

} 


 

import-jdl komutuyla dosya içindeki entityleri oluşturun.

$ jhipster import-jdl   many-to-many.jdl 

 

Bu komut ile many-to-many.jdl  dosyasında tanımlanan iki entity ve bu entitylerle ilişkili tüm dosyalar oluşturulacaktır.

oluşturma işlemi bittikten sonra Car.java(entity) aşağıdaki gibi olacaktır.


@Entity
@Table(name = "car")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Car implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@NotNull
@Column(name = "name", nullable = false)
private String name;

@NotNull
@Column(name = "color", nullable = false)
private String color;

@NotNull
@Column(name = "year", nullable = false)
private Integer year;

@ManyToMany
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@JoinTable(name = "car_driver",
joinColumns = @JoinColumn(name = "car_id",
referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "driver_id",
referencedColumnName = "id"))
private Set<Driver> drivers = new HashSet<>();
...

 

 


Driver.java(entity) dosyasının içeriği de aşağıdaki şekilde olacaktır.


@Entity
@Table(name = "driver")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Driver implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@NotNull
@Column(name = "first_name", nullable = false)
private String firstName;

@NotNull
@Column(name = "last_name", nullable = false)
private String lastName;

@ManyToMany(mappedBy = "drivers")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@JsonIgnore
private Set<Car> cars = new HashSet<>();
...

 

 


Yine projede git status ile değişen dosyalara ve yeni oluşan dosyalara bakmanız biraz daha konunun anlaşılmasına yardımcı olabilir

 $ git status

 

işlem tamamlandıktan sonra projeyi ayağa kaldırarak Car ve Driver oluşturarak mutlaka aşıdaki ekranları inceleyiniz.

http://127.0.0.1:8080/driver
http://127.0.0.1:8080/driver/1/view
http://127.0.0.1:8080/car
http://127.0.0.1:8080/car/1/edit


Hiç yorum yok:

Yorum Gönder