Selon mes connaissances, il n'y a pas d'option pour mettre à jour des colonnes individuelles en utilisant une requête dans gemfire. Pour mettre à jour une colonne individuelle, j'obtiens actuellement tout l'ancien objet et je modifie la valeur modifiée et je la stocke. Si quelqu'un a implémenté quelque chose sur la mise à jour de colonnes individuelles, merci de partager.Mise à jour d'une colonne individuelle dans Pivotal GemFire
@Region("tracking")
public class Tracking implements Serializable {
public String id;
public String status;
public String program;
}
@Region("tracking")
public interface TrackingQueryRepository extends CrudRepository<Tracking, String> {
}
Je suis nouveau à la mise en œuvre de la propagation de Delta. J'ai lu le guide de l'utilisateur et j'ai essayé de mettre en œuvre et reçu l'exception donnée ci-dessous. Pouvez-vous s'il vous plaît partager vos pensées sur cela.
Another.java - classe de domaine
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.io.Serializable;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.gemstone.gemfire.Delta;
import com.gemstone.gemfire.InvalidDeltaException;
@Region("delta")
public class Another implements Delta, Serializable {
private static final long serialVersionUID = 1L;
@Id
private String anotherId;
@JsonProperty("anotherProgramId")
private String anotherProgramId;
public Another() {
}
public Another(String anotherId, String anotherProgramId) {
this.anotherId = anotherId;
this.anotherProgramId = anotherProgramId;
}
public String getAnotherId() {
return anotherId;
}
public void setAnotherId(String anotherId) {
this.anotherIdChd = true;
this.anotherId = anotherId;
}
public String getAnotherProgramId() {
return anotherProgramId;
}
public void setAnotherProgramId(String anotherProgramId) {
this.anotherProgramIdChd = true;
this.anotherProgramId = anotherProgramId;
}
private transient boolean anotherIdChd = false;
private transient boolean anotherProgramIdChd = false;
@Override
public String toString() {
return "Another [anotherId=" + anotherId + ", anotherProgramId=" + anotherProgramId + "]";
}
@Override
public void fromDelta(DataInput in) throws IOException, InvalidDeltaException {
if (in.readBoolean()) {
// Read the change and apply it to the object
this.anotherId = in.toString();
System.out.println(" Applied delta to field 'anotherId' = " + this.anotherId);
}
if (in.readBoolean()) {
this.anotherProgramId = in.toString();
System.out.println(" Applied delta to field 'anotherProgramId' = " + this.anotherProgramId);
}
}
@Override
public boolean hasDelta() {
return this.anotherIdChd || this.anotherProgramIdChd;
}
@Override
public void toDelta(DataOutput out) throws IOException {
System.out.println("Extracting delta from " + this.toString());
out.writeBoolean(anotherIdChd);
if (anotherIdChd) {
// Write just the changes into the data stream
out.writeUTF(this.anotherId);
// Once the delta information is written, reset the delta status
// field
this.anotherIdChd = false;
System.out.println(" Extracted delta from field 'anotherId' = " + this.anotherId);
}
out.writeBoolean(anotherProgramIdChd);
if (anotherProgramIdChd) {
out.writeUTF(this.anotherProgramId);
this.anotherProgramIdChd = false;
System.out.println(" Extracted delta from field 'anotherProgramId' = " + this.anotherProgramId);
}
}
}
client cache.xml
<pdx>
<pdx-serializer>
<class-name>com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer</class-name>
<parameter name="classes">
<string>com\.rs\.main\..+</string>
</parameter>
</pdx-serializer>
</pdx>
Spring XML Namespace
<util:properties id="gemfire-props">
<prop key="delta-propagation">true</prop>
</util:properties>
<gfe:client-cache pool-name="serverPool" cache-xml-location="classpath:client-cache.xml" properties-ref="gemfire-props"/>
<gfe:client-region id="delta" pool-name="serverPool" shortcut="PROXY" cloning-enabled="true">
Version GemFire instance locale - pivot-GemFire-9.0.1
Région Création Créer région -name = delta -type = REPLICATE
Exception:
2017-05-08 22:17:12.370 ERROR 14696 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: remote server on 10.148.210.249(:loner):53784:e10627eb: com.gemstone.gemfire.pdx.PdxSerializationException: Could not create an instance of a class com.rs.main.Another; nested exception is com.gemstone.gemfire.cache.client.ServerOperationException: remote server on 10.148.210.249(:loner):53784:e10627eb: com.gemstone.gemfire.pdx.PdxSerializationException: Could not create an instance of a class com.rs.main.Another] with root cause
java.lang.ClassNotFoundException: com.rs.main.Another
at org.apache.geode.internal.ClassPathLoader.forName(ClassPathLoader.java:437) ~[na:na]
at org.apache.geode.internal.InternalDataSerializer.getCachedClass(InternalDataSerializer.java:4010) ~[na:na]
at org.apache.geode.pdx.internal.PdxType.getPdxClass(PdxType.java:235) ~[na:na]
at org.apache.geode.pdx.internal.PdxReaderImpl.basicGetObject(PdxReaderImpl.java:687) ~[na:na]
at org.apache.geode.pdx.internal.PdxReaderImpl.getObject(PdxReaderImpl.java:682) ~[na:na]
at org.apache.geode.internal.InternalDataSerializer.readPdxSerializable(InternalDataSerializer.java:3218) ~[na:na]
at org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:3005) ~[na:na]
at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2897) ~[na:na]
at org.apache.geode.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:90) ~[na:na]
at org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1891) ~[na:na]
at org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1884) ~[na:na]
at org.apache.geode.internal.cache.VMCachedDeserializable.getDeserializedValue(VMCachedDeserializable.java:134) ~[na:na]
at org.apache.geode.internal.cache.EntryEventImpl.processDeltaBytes(EntryEventImpl.java:1687) ~[na:na]
at org.apache.geode.internal.cache.EntryEventImpl.setNewValueInRegion(EntryEventImpl.java:1558) ~[na:na]
at org.apache.geode.internal.cache.EntryEventImpl.putExistingEntry(EntryEventImpl.java:1504) ~[na:na]
at org.apache.geode.internal.cache.AbstractRegionMap.updateEntry(AbstractRegionMap.java:2959) ~[na:na]
at org.apache.geode.internal.cache.AbstractRegionMap.basicPut(AbstractRegionMap.java:2782) ~[na:na]
at org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5750) ~[na:na]
at org.apache.geode.internal.cache.DistributedRegion.virtualPut(DistributedRegion.java:337) ~[na:na]
at org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:151) ~[na:na]
at org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5730) ~[na:na]
at org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5374) ~[na:na]
at org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:381) ~[na:na]
at org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:141) ~[na:na]
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:776) ~[na:na]
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:904) ~[na:na]
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1160) ~[na:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_121]
at org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:519) ~[na:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Hi John, Cette application est une application Cache-Client et utilise déjà les fonctionnalités de sérialisation de Gemfire. Nous avons décidé d'opter pour le Delta Propagation. Vos explications sont précises et super utiles. Je voudrais mettre en œuvre et ensuite, accepter votre réponse. Merci beaucoup. Votre aide a été inestimable pour moi. – Vigneshwaran
Vous êtes les bienvenus. –
J'ai essayé avec Delta Propagation ne me convenait pas à cause du PDX. Essayer d'implémenter en utilisant Function onRegion(). WithFilter (clé) .withArgs (columnsAndValuesMap). Pouvez-vous s'il vous plaît partager des extraits de code à écrire pour la fonction serveur (méthode Execute). Merci d'avance – Vigneshwaran