Jhipster, 엔티티를 지연로드하는 방법 ... Pom 구성,

이네스 고메스

이 모델이 있습니다 : 여기에 붙여 넣을 수 있습니다. https://start.jhipster.tech/jdl-studio/

entity NmsDomain {
  name String required,
  logo ImageBlob,
  brandImg ImageBlob
}


entity NmsTenant {
  name String required,
  image ImageBlob
}


entity NmsZone {
  name String required,
  description String,
  active Boolean,
  lastModifiedDate ZonedDateTime,
  lastModifiedBy String 
}

entity NmsEmployee {
  extensionNumber String,
  photo ImageBlob
}


entity NmsEmployeeLog {
  begin ZonedDateTime,
  end ZonedDateTime,
  deviceType String,
  make String, 
  model String, 
  imei String, 
  serialNumber String, 
  ipAddress String, 
  macAddress String, 
  wifiNetwork String
}

relationship OneToOne {
  NmsEmployee{user(firstName)} to User
  }


  relationship ManyToMany {
  NmsEmployee{possibleZones(name)} to NmsZone{employeePossible}, 
  NmsEmployee{activeZones(name)} to NmsZone{employeeActive}, 
  NmsEmployee{possibleTenants(name)} to NmsTenant{employeePossible}, 
  NmsDomain{user(firstName)} to User{NmsDomain}
}


relationship ManyToOne {
  NmsEmployeeLog{employee} to NmsEmployee, 
  NmsEmployeeLog{zone(name)} to NmsZone, 
  NmsEmployee{domain(name)} to NmsDomain,
  NmsEmployee{tenant(name)} to NmsTenant, 
 NmsTenant{domain(name)} to NmsDomain, 
  NmsZone{tenant(name)} to NmsTenant
}

EmployeeLog.java :

    @ManyToOne(fetch = FetchType.LAZY) 
    @JsonIgnoreProperties("nmsEmployeeLogs")
    private NmsEmployee employee;

    @ManyToOne
    @JsonIgnoreProperties("nmsEmployeeLogs")
    private NmsZone zone;

EmployeeLogRepository :

@Query(value ="SELECT entity FROM NmsEmployeeLog entity WHERE entity.employee.id = :empId",
countQuery ="select count(entity) FROM NmsEmployeeLog entity WHERE entity.employee.id = :empId")

Page<NmsEmployeeLog> findByEmpId(@Param("empId") Long empId, Pageable pageable);

많은 이미지와 연결된 모든 직원, 사용자, 도메인, 테넌트 정보를 얻습니다. 매우 느립니다 ... EmployeeLog의 단 1 행에 대해 다음과 같이 얻습니다.

[
  {
    "id": 6,
    "begin": "2019-02-03T07:54:00Z",
    "end": "2019-02-03T07:54:00Z",
    "deviceType": null,
    "make": null,
    "model": null,
    "imei": null,
    "serialNumber": null,
    "ipAddress": null,
    "macAddress": null,
    "wifiNetwork": null,
    "employee": {
      "id": 11,
      "extensionNumber": "1223",
      "photo": "iVBORw0KGgoAAAANSUhEUg ….LOTS OF IMAGE CODE.”,
      "photoContentType": "image/png",

      "user": {
        "id": 3,
        "login": "admin",
        "firstName": "Admin",
        "lastName": "IGomes",
        "email": “m…”,
        "activated": true,
        "langKey": "pt-pt",
        "imageUrl": "",
        "resetDate": null
      },
      "domain": {
        "id": 2,
        "name": "Fe ",
        "logo": "/9j/4 ….LOTS OF IMAGE CODE”,
        "brandImgContentType": "image/jpeg",
        "brandLink": null

      },
      "tenant": {
        "id": 4,
        "name": "Heathlands V",
        "image": “LOTS OF IMAGE CODE…..”,
        "imageContentType": "image/jpeg",
        "domain": {
          "id": 2,
          "name": "Feds ",
          "logo": "/9j/4A== ….”,
          "logoContentType": "image/jpeg",
          "brandImg": "/9j/4AAQSkAAH//Z …..LOTS OF IMAGE CODE”,
          "brandImgContentType": "image/jpeg"

        }
      },
      "possibleZones": null,
      "activeZones": null,
      "possibleTenants": null
    },
    "zone": {
      "id": 27,
      "name": "EHBlk EH1",
      "description": "EH Block 1",
      "active": true,
      "lastModifiedDate": "2019-09-28T11:39:32Z",
      "lastModifiedBy": "Louis ",
      "tenant": {
        "id": 4,
        "name": "Heathlands V",
        "image": "/9j/4AAQSkZJRgABAQAAA …. LOTS OF IMAGE CODE”,
        "imageContentType": "image/jpeg",
        "domain": {
          "id": 2,
          "name": "Fed ",
          "logo":  LOTS OF IMAGE CODE….”,
          "brandImgContentType": "image/jpeg",
        }
      }
    }
  },
  {
Next Row Log ...

다음 필드 대신 :

public interface EmployeeLog {
     Long getId();
     ZonedDateTime getBegin();
     ZonedDateTime getEnd();
     String getDevice();
     String getType();
     String getMake();
     String getModel();
     String getImei();
     String getSerialNumber();
     String getIpAddress();
     String getMacAddress();
     String getWifiNetwork();
}

인터페이스 또는 DTO를 생성하고 해당 필드 만 선택하면 작동합니다 : 나는 여분의 것을 얻지 않습니다.

하지만 대부분의 엔티티에 대해이 작업을 수행해야합니다.

엔터티에서 지연로드를 나타내는 방법이 있습니까?

아니면 모든 엔터티에 DTO를 수행 할 필요없이 원하는 필드와 원하지 않는 필드를 나타내는 간단한 방법이 있습니까?

이네스 고메스

1-json 뷰 주석 (더 유연함)

https://mkyong.com/java/jackson-jsonview-examples/ 또는 https://www.logicbig.com/tutorials/misc/jackson/json-view-annotation.html 또는 https://spring.io/blog / 2014 / 12 / 02 / latest-jackson-integration-improvements-in-spring

AllViews.java :

public class AllViews {
     public interface List {}
     public interface Edit {}
}

EmployeeLog.java :

   @JsonView(AllViews.List.class)
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @JsonView(AllViews.List.class)
    @Column(name = "begin")
    private ZonedDateTime begin;

    @JsonView(AllViews.List.class)
    @Column(name = "end")
    private ZonedDateTime end;

    @JsonView(AllViews.List.class)
    @Column(name = "device_type")
    private String deviceType;

    @Column(name = "make")
    private String make;

    @JsonView(AllViews.List.class)
    @Column(name = "model")
    private String model;

    @Column(name = "imei")
    private String imei;

    @JsonView(AllViews.List.class)
    @Column(name = "serial_number")
    private String serialNumber;

    @JsonView(AllViews.List.class)
    @Column(name = "ip_address")
    private String ipAddress;

    @Column(name = "mac_address")
    private String macAddress;

    @JsonView(AllViews.List.class)
    @Column(name = "wifi_network")
    private String wifiNetwork;

EmployeeLogResource :

@JsonView(AllViews.List.class)
    @GetMapping("/nms-employee-logsByEmployeeId/{empId}")
    public ResponseEntity<List<NmsEmployeeLog>> getResidentsByTenantId(final Pageable pageable,
            @PathVariable final Long empId) {
        log.debug("REST request to get a page of NmsEmployeeLog ByTenantId");

        final Page<NmsEmployeeLog> page = nmsEmployeeLogRepository.findByEmpId(empId, pageable);
        final HttpHeaders headers = PaginationUtil
                .generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), page);
        return ResponseEntity.ok().headers(headers).body(page.getContent());
    }

결과:

[

  {
    "id": 6,
    "begin": "2019-02-03T08:54:00+01:00",
    "end": "2019-02-03T08:54:00+01:00",
    "deviceType": some device,
    "model": some model,
    "serialNumber": xxxxx,
    "ipAddress": xx.xx.xx,
    "wifiNetwork": wifi
  },

2- 또는 The Lazy Way (그다지 유연하지 않음)

나는 이것을 pom.xml에 추가하고 만듭니다 ./mvn clean compile(나는 그것을 잊은 것 같습니다)

        <plugin>
            <groupId>org.hibernate.orm.tooling</groupId>
            <artifactId>hibernate-enhance-maven-plugin</artifactId>
            <version>${hibernate.version}</version>
            <executions>
                <execution>
                    <configuration>
                        <failOnError>true</failOnError>
                        <enableLazyInitialization>true</enableLazyInitialization>
                    </configuration>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jhipster 엔티티 하위 생성기 : Gradle을 사용하여 Prod에서 Liquibase DELTA 변경 로그를 만드는 방법은 무엇입니까?

분류에서Dev

엔티티를 생성하는 방법. 최대 절전 모드

분류에서Dev

Symfony 엔티티를 생성하고 다른 엔티티에 추가하는 방법은 무엇입니까?

분류에서Dev

다른 항목이 호출 될 때 엔티티 필드를 업데이트하는 JHipster 가장 좋은 방법

분류에서Dev

핵심 데이터 : 관련 엔티티의 속성을 기반으로 엔티티를 가져 오는 방법

분류에서Dev

jhipster는 생성 된 엔티티에 대한 liquibase 변경 로그를 생성하지 않습니다.

분류에서Dev

엔티티에 대한 JHipster API의 모든 인스턴스를 검색하는 방법

분류에서Dev

이 쿼리를 엔티티 프레임 워크로 작성하는 방법

분류에서Dev

JWT 토큰으로 여러 사용자 엔티티를 구성하는 방법은 무엇입니까?

분류에서Dev

ICRF로 표시되도록 Cesium 엔티티를 구성하는 방법이 있습니까?

분류에서Dev

ManyToOne 단방향 교리 매핑을 위해 zf2에서 엔티티를 구성하는 방법

분류에서Dev

@EmbeddedId와 JPA 엔티티를 구문 분석하는 스프링 MVC @RequestBody 방법

분류에서Dev

모델과 엔티티를 구별하는 방법은 무엇입니까?

분류에서Dev

행성 이름에 대한 엔티티를 설정하는 방법-dialogflow

분류에서Dev

Apache Olingo에서 엔티티를 생성하는 방법은 무엇입니까?

분류에서Dev

새 엔티티없이 다 대다 관계를 구성하는 방법은 무엇입니까?

분류에서Dev

Panache 엔터티를 자동 생성하는 방법

분류에서Dev

속성이 동일한 엔티티를 참조 할 때 엔티티를 삭제하는 방법은 무엇입니까?

분류에서Dev

Maven을 사용하여 Nexus에 ZIP 파일을 업로드하고 Nexus에서 pom 아티팩트를 생성하지 않는 방법은 무엇입니까?

분류에서Dev

엔티티 프레임 워크에 대한 공유 메소드를 작성하는 방법

분류에서Dev

Symfony-컨트롤러에서 엔티티에 대한 크 러드를 재생성하는 방법

분류에서Dev

하위 엔티티의 필드를 기반으로 Hazelcast 맵에서 엔티티를 가져 오는 방법

분류에서Dev

최대 절전 모드 검색 : 방법을 구성 지수에 동적으로 JPA 엔티티 하시나요?

분류에서Dev

JHipster에서 경고 할 엔티티 구성

분류에서Dev

비 형식 속성이 손실되지 않도록 바인딩을 위해 지속되는 Hibernate 엔티티를로드하는 방법은 무엇입니까?

분류에서Dev

모든 속성 및 컬렉션으로 엔터티를 복제하는 방법

분류에서Dev

IEntity를 구현하기 위해 엔티티를 자동화하는 방법은 무엇입니까?

분류에서Dev

이 두 엔티티를 연결하는 방법

분류에서Dev

핵심 데이터의 엔티티를 연결하는 방법

Related 관련 기사

  1. 1

    Jhipster 엔티티 하위 생성기 : Gradle을 사용하여 Prod에서 Liquibase DELTA 변경 로그를 만드는 방법은 무엇입니까?

  2. 2

    엔티티를 생성하는 방법. 최대 절전 모드

  3. 3

    Symfony 엔티티를 생성하고 다른 엔티티에 추가하는 방법은 무엇입니까?

  4. 4

    다른 항목이 호출 될 때 엔티티 필드를 업데이트하는 JHipster 가장 좋은 방법

  5. 5

    핵심 데이터 : 관련 엔티티의 속성을 기반으로 엔티티를 가져 오는 방법

  6. 6

    jhipster는 생성 된 엔티티에 대한 liquibase 변경 로그를 생성하지 않습니다.

  7. 7

    엔티티에 대한 JHipster API의 모든 인스턴스를 검색하는 방법

  8. 8

    이 쿼리를 엔티티 프레임 워크로 작성하는 방법

  9. 9

    JWT 토큰으로 여러 사용자 엔티티를 구성하는 방법은 무엇입니까?

  10. 10

    ICRF로 표시되도록 Cesium 엔티티를 구성하는 방법이 있습니까?

  11. 11

    ManyToOne 단방향 교리 매핑을 위해 zf2에서 엔티티를 구성하는 방법

  12. 12

    @EmbeddedId와 JPA 엔티티를 구문 분석하는 스프링 MVC @RequestBody 방법

  13. 13

    모델과 엔티티를 구별하는 방법은 무엇입니까?

  14. 14

    행성 이름에 대한 엔티티를 설정하는 방법-dialogflow

  15. 15

    Apache Olingo에서 엔티티를 생성하는 방법은 무엇입니까?

  16. 16

    새 엔티티없이 다 대다 관계를 구성하는 방법은 무엇입니까?

  17. 17

    Panache 엔터티를 자동 생성하는 방법

  18. 18

    속성이 동일한 엔티티를 참조 할 때 엔티티를 삭제하는 방법은 무엇입니까?

  19. 19

    Maven을 사용하여 Nexus에 ZIP 파일을 업로드하고 Nexus에서 pom 아티팩트를 생성하지 않는 방법은 무엇입니까?

  20. 20

    엔티티 프레임 워크에 대한 공유 메소드를 작성하는 방법

  21. 21

    Symfony-컨트롤러에서 엔티티에 대한 크 러드를 재생성하는 방법

  22. 22

    하위 엔티티의 필드를 기반으로 Hazelcast 맵에서 엔티티를 가져 오는 방법

  23. 23

    최대 절전 모드 검색 : 방법을 구성 지수에 동적으로 JPA 엔티티 하시나요?

  24. 24

    JHipster에서 경고 할 엔티티 구성

  25. 25

    비 형식 속성이 손실되지 않도록 바인딩을 위해 지속되는 Hibernate 엔티티를로드하는 방법은 무엇입니까?

  26. 26

    모든 속성 및 컬렉션으로 엔터티를 복제하는 방법

  27. 27

    IEntity를 구현하기 위해 엔티티를 자동화하는 방법은 무엇입니까?

  28. 28

    이 두 엔티티를 연결하는 방법

  29. 29

    핵심 데이터의 엔티티를 연결하는 방법

뜨겁다태그

보관