Java 定向数据库。设置ConflictStrategy引发异常

Java 定向数据库。设置ConflictStrategy引发异常,java,orientdb,Java,Orientdb,我有一个对象数据库。我想使用api设置自己的冲突策略 OObjectDatabaseTx db; db.setConflictStrategy(new ORecordConflictStrategy() { @Override public byte[] onUpdate(OStorage storage, byte iRecordType, ORecordId rid, ORecordVersion iRecordVersion, byte[]

我有一个对象数据库。我想使用api设置自己的冲突策略

OObjectDatabaseTx db;
db.setConflictStrategy(new ORecordConflictStrategy() {
            @Override
            public byte[] onUpdate(OStorage storage, byte iRecordType, ORecordId rid, ORecordVersion iRecordVersion, byte[] iRecordContent, ORecordVersion iDatabaseVersion) {
                <implementation>;
            }

            @Override
            public String getName() {
                return "SOME NAME";
            }
        });

有没有办法设置冲突策略?

您正在客户端中设置冲突策略,但这是不可能的,因为使用冲突策略的是服务器。如果使用带“远程”协议的OrientDB,则应该将其安装在服务器中。怎么做

很简单,在
startup()
中编写一个函数,将其自身注册为数据库侦听器。这样,一旦实现了
onOpen()
onCreate()
方法,就可以像以前一样安装冲突策略。示例(未尝试):


您好@Nem,您能发布错误吗?Thx预付款。我已经添加了例外。谢谢你的回答,@Lvca!我现在就试试
10:40:48,718 INFO  [com.ats.vis.services.transaction.TransactionManager] (TransactionExecutor[UML]) [__MAIN_WS__] ERROR:: java.lang.UnsupportedOperationException: setConflictStrategy
at com.orientechnologies.orient.client.remote.OStorageRemoteThread.setConflictStrategy(OStorageRemoteThread.java:318) [orientdb-client-2.1.19.jar:2.1.19]
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.setConflictStrategy(ODatabaseDocumentTx.java:1122) [orientdb-core-2.1.19.jar:2.1.19]
at com.orientechnologies.orient.object.db.OObjectDatabaseTx.setConflictStrategy(OObjectDatabaseTx.java:760) [orientdb-object-2.1.19.jar:2.1.19]
public class MyPlugin OServerPluginAbstract implements ODatabaseLifecycleListener {
  @Override
  public void startup() {
    Orient.instance().addDbLifecycleListener(this);
  }

  @Override
  public void onOpen(final ODatabaseInternal db) {
    db.setConflictStrategy(new ORecordConflictStrategy() {
        @Override
        public byte[] onUpdate(OStorage storage, byte iRecordType, ORecordId rid, ORecordVersion iRecordVersion, byte[] iRecordContent, ORecordVersion iDatabaseVersion) {
            <implementation>;
        }

        @Override
        public String getName() {
            return "SOME NAME";
        }
    });
  }

  @Override
  public void onOpen(final ODatabaseInternal db) {
    onOpen(db);
  }
  // BOILERPLATE CODE MISSING
}
    <handler class="com.orientechnologies.orient.server.handler.OJMXPlugin">
        <parameters>
        </parameters>
    </handler>