Java 定向数据库。设置ConflictStrategy引发异常
我有一个对象数据库。我想使用api设置自己的冲突策略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[]
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>