웹 소켓 통신에서 JPA + EJB가 관리되지 않는 엔티티

user3598272
  1. websocket에 연결된 브라우저 및 서버
  2. 연결 후 브라우저는 데이터를 보내고 'firstMessage'메소드로 서버에서 처리합니다. 이 메소드는 Player 엔티티를 'player'라는 변수에 저장 하고 데이터를 변경합니다 (잘 작동하며 데이터베이스는 변경됨)
  3. 다음으로 브라우저는 'secondMessage'메소드로 서버에서 처리 된 데이터를 다시 보냅니다. 이전에 이미 저장 한 플레이어 엔티티 데이터를 변경합니다. 데이터는 변경되지만 문제는 데이터베이스가 변경되지 않는다는 것입니다.

    @Singleton
    @Startup
    public class Engine {
    
    @Inject DaoPlayer daoPlayer;
    Player player;    
    
    public void firstMessage(clientId){
        player = daoPlayer.findById(clientId);
        player.coin = 3;
    }
    
    public void secondMessage(){
        player.coin = 999;
    

    }

문제 :

데이터베이스를 업데이트하지 않는 'secondMessage'메서드 내부의 플레이어 엔티티 변경

내가 지금까지 시도한 것 :

  • 이미 Engine, DaoPlayer 및 Player 클래스가 동일한 인스턴스인지 확인합니다 (생성 할 때 임의의 숫자를 생성하여).
  • 나는 secondMessage에서 이것을하고 잘 작동합니다. 그러나 나는 이것을 원하지 않는다.

    public void secondMessage(){
        player.coin = 999;
        daoPlayer.getEntityManager().merge(player);
    

    }

    나는 기대한다

    player.coin = 999; 데이터베이스를 업데이트하기에 충분해야합니다.

스티브 C

당신이하려는 것은 불가능합니다.

다음 secondMessage과 같이 코딩해야합니다.

public void secondMessage() {
    player.coin = 999;
    player = daoPlayer.merge(player);
}

player트랜잭션이 완료 될 때까지 (아마도 메서드가 반환 될 때) 개체가 현재 지속성 컨텍스트의 일부로 남아 있기 때문에 첫 번째 메서드가 작동 합니다.

두 번째 방법 player은 더 이상 지속성 컨텍스트의 일부가 아니기 때문에 작동 하지 않습니다. merge작업은이를 지속성 컨텍스트로 다시 병합하여 콜 체인에서 이전에로드 된 경우 다른 인스턴스를 반환 할 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Stateful ejb 확장에서 찾은 JPA 엔티티는 관리되지 않습니다.

분류에서Dev

SpringBoot2 - JPA의 엔티티가 관리되지 않는 유형

분류에서Dev

JPA 엔티티의 @PostConstruct가 Spring Boot에서 호출되지 않음

분류에서Dev

JPA 엔티티가 EJB에서 프리젠 테이션 계층으로 올바르게 전달되지 않았습니다.

분류에서Dev

Spring 3.2에서 JPA / Hibernate 설정에서 엔티티가 지속되지 않는 이유는 무엇입니까?

분류에서Dev

다른 엔티티 오류가있는 JPA 관리 맵핑

분류에서Dev

JPA 엔티티에 대한 하위 연관을 가져 오는 방법

분류에서Dev

EntityManager에 등록되지 않은 JPA 엔티티

분류에서Dev

JPA, spring-boot, 주석이 추가되지 않은 오래된 클래스로 엔티티 관리자 구성

분류에서Dev

웹 소켓 심포니 앱 서비스에서 엔티티, 양식, 컨트롤러를 사용하는 방법

분류에서Dev

내 저장소를 통해 업데이트 할 때 엔티티 중 하나가 엔티티 프레임 워크에 저장되지 않습니다.

분류에서Dev

ManyToMany 관계가있는 JPA 열거 엔티티

분류에서Dev

JAX-RS의 JAXB-관계가있는 JPA 엔티티가 로그에 오류없이 JSON HTTP 500을 리턴하지 않음 (Glassfish)

분류에서Dev

jpa는 엔티티가 아닌 클래스 상속 @entity 유지

분류에서Dev

엔티티 객체 SpringData JPA를 유지하지 않는 저장 메소드

분류에서Dev

org.hibernate.AnnotationException : JPA XML 엔티티 매핑을 사용하는 엔티티에 대해 지정된 식별자가 없습니다.

분류에서Dev

ID가있는 JPA 엔티티 문제

분류에서Dev

JPA에서 ManyToOne 관계가있는 데이터베이스에 엔티티 목록 저장

분류에서Dev

관리 엔터티 우회 또는 JPA에서

분류에서Dev

세션 외부에서 JPA 엔티티가 이와 같이 취급되는 이유는 무엇입니까?

분류에서Dev

Spring Boot JPA는 엔티티를 세션에 연결하지 않습니다.

분류에서Dev

"allow_add"가있는 Symfony CollectionType이 상위 엔티티에 하위 엔티티를 추가하지 않음

분류에서Dev

연관된 엔티티가 트랜잭션에 저장되지 않습니다.

분류에서Dev

JPA의 관리 엔티티 객체에 할당되는 메모리 영역은 무엇입니까?

분류에서Dev

JPA 엔티티에는 테이블의 열이 없지만 엔티티의 존재하지 않는 열을 기반으로 쿼리

분류에서Dev

Doctrine에서 관리하지 않는 테이블의 엔티티?

분류에서Dev

일관된 URL 구조를 사용하여 웹 페이지에서 가변 엔티티를 쿼리합니다.

분류에서Dev

JPA : 엔티티 계층 구조에서 연관된 엔티티 검색

분류에서Dev

Eclipse : MySQL에서 엔티티 생성-엔티티에 DAO 메소드가있는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    Stateful ejb 확장에서 찾은 JPA 엔티티는 관리되지 않습니다.

  2. 2

    SpringBoot2 - JPA의 엔티티가 관리되지 않는 유형

  3. 3

    JPA 엔티티의 @PostConstruct가 Spring Boot에서 호출되지 않음

  4. 4

    JPA 엔티티가 EJB에서 프리젠 테이션 계층으로 올바르게 전달되지 않았습니다.

  5. 5

    Spring 3.2에서 JPA / Hibernate 설정에서 엔티티가 지속되지 않는 이유는 무엇입니까?

  6. 6

    다른 엔티티 오류가있는 JPA 관리 맵핑

  7. 7

    JPA 엔티티에 대한 하위 연관을 가져 오는 방법

  8. 8

    EntityManager에 등록되지 않은 JPA 엔티티

  9. 9

    JPA, spring-boot, 주석이 추가되지 않은 오래된 클래스로 엔티티 관리자 구성

  10. 10

    웹 소켓 심포니 앱 서비스에서 엔티티, 양식, 컨트롤러를 사용하는 방법

  11. 11

    내 저장소를 통해 업데이트 할 때 엔티티 중 하나가 엔티티 프레임 워크에 저장되지 않습니다.

  12. 12

    ManyToMany 관계가있는 JPA 열거 엔티티

  13. 13

    JAX-RS의 JAXB-관계가있는 JPA 엔티티가 로그에 오류없이 JSON HTTP 500을 리턴하지 않음 (Glassfish)

  14. 14

    jpa는 엔티티가 아닌 클래스 상속 @entity 유지

  15. 15

    엔티티 객체 SpringData JPA를 유지하지 않는 저장 메소드

  16. 16

    org.hibernate.AnnotationException : JPA XML 엔티티 매핑을 사용하는 엔티티에 대해 지정된 식별자가 없습니다.

  17. 17

    ID가있는 JPA 엔티티 문제

  18. 18

    JPA에서 ManyToOne 관계가있는 데이터베이스에 엔티티 목록 저장

  19. 19

    관리 엔터티 우회 또는 JPA에서

  20. 20

    세션 외부에서 JPA 엔티티가 이와 같이 취급되는 이유는 무엇입니까?

  21. 21

    Spring Boot JPA는 엔티티를 세션에 연결하지 않습니다.

  22. 22

    "allow_add"가있는 Symfony CollectionType이 상위 엔티티에 하위 엔티티를 추가하지 않음

  23. 23

    연관된 엔티티가 트랜잭션에 저장되지 않습니다.

  24. 24

    JPA의 관리 엔티티 객체에 할당되는 메모리 영역은 무엇입니까?

  25. 25

    JPA 엔티티에는 테이블의 열이 없지만 엔티티의 존재하지 않는 열을 기반으로 쿼리

  26. 26

    Doctrine에서 관리하지 않는 테이블의 엔티티?

  27. 27

    일관된 URL 구조를 사용하여 웹 페이지에서 가변 엔티티를 쿼리합니다.

  28. 28

    JPA : 엔티티 계층 구조에서 연관된 엔티티 검색

  29. 29

    Eclipse : MySQL에서 엔티티 생성-엔티티에 DAO 메소드가있는 이유는 무엇입니까?

뜨겁다태그

보관