2012-10-23 3 views
0

나는 생년월일, 카테고리와 같은 속성을 많이 가지고 playOrm에 매핑 된 엔티티 등ID가 같으면 NoSqlEntityManager.put이 업데이트됩니까?

내가 처음에 카산드라에서이 개체를 저장 NoSqlEntityManager.put을 사용한다고 가정이있다. 나중에 시간, 나는 다음을 수행 그 후

NoSqlEntityManager em =...; 
Entity e = new Entity(); 
entity.id = 123 
entity.birthDate = 20121212 
em.put(e); 

:

NoSqlEntityManager em =...; 
Entity e = new Entity(); 
entity.id = 123 
entity.categories = {"cat1", "cat2", "cat3"}; 
em.put(e); 

은 무엇 카산드라에서 일어날 나는 다음을 썼다? 새로운 엔티티가 생성됩니까? 아니면 오래된 것이 업데이트 될 것입니까? 업데이트되면 두 번째 글에서 생일이 지워 집니까? (바람직하지 않음)

답변

1

em.put (e, false); 업데이트하는 데 사용할 수 있지만 인덱스가 변경되었거나 수정되었는지 여부를 알아 내야하기 때문에 주로 값을 읽습니다.

em.put (e)를 수행하면 데이터베이스의 birthDate가 null로 변경됩니다.

이것은 흥미 롭습니다. 우리가 엔티티의 각 필드에 널 (null)이 귀하의 경우와 같이 데이터베이스에 기록되지 않는다고 말하는 플래그가 있어야하는지 궁금합니다. @Column (nullsWritten = false)을 가지고있는 경우, 특수한 경우에 실제로 null를 쓰고 싶다면, 그 경우 null을 어떻게 써야할까요? 어떤 아이디어?

위 엔티티에 @NoSqlIndexable이있는 필드가 있습니까?

덕분에, 딘

+0

나는 필드의 속성이 excelent의 시작이 될 것이라고 생각합니다. – mvallebr

+0

지금이 엔티티에 NoSqlIndexable을 가지고 있지 않지만 앞으로는 반드시 가질 것입니다 – mvallebr

+0

최종 결과는 put 작업에서 전달해야하는 필드를 설명하고 어떤 필드를 업데이트하면 안되는지 설명하는 것입니다. 극단적 인 경우에 필요합니다. 그러나 제 경우에는 em.put (e, false)를 사용하여 제공 한 솔루션으로 충분하다고 생각합니다. 고마워, BTW : D – mvallebr