如何解决在Java中使用Neo4j驱动程序的结果
使用针对Java的Neo4j驱动程序,我想向数据库发送搜索查询,例如:
MATCH(a:`Label`{Property:"NODE_PROPERTY"})
RETURN *
首先,我创建一个会话,然后使用驱动程序的运行方法来运行查询:
Result run = session.run(query);
run变量包含一个记录列表。我的问题是如何使用记录,以便将它们转换为Java对象?我试图获取结果的值,但是由于它们不可迭代,因此不可能一一获得。
解决方法
from tensorflow import keras
input_shape = (300,3)
# MODEL DENSE A
keras.backend.clear_session()
input_ = keras.layers.Input(shape=input_shape)
out = keras.layers.Flatten()(input_)
out = keras.layers.Dense(units=100,activation='relu')(out)
out = keras.layers.Dense(units=50,activation='relu')(out)
out = keras.layers.Dense(units=10,activation='softmax')(out)
mdl_dense_A = keras.models.Model(name='dense',inputs=input_,outputs=out)
# MODEL DENSE B
keras.backend.clear_session()
input_ = keras.layers.Input(shape=input_shape)
out = keras.layers.Flatten()(input_)
out = keras.layers.Dense(units=100,activation='softmax')(out)
mdl_dense_B = keras.models.Model(name='dense',outputs=out)
print(mdl_dense_A.get_config() == mdl_dense_B.get_config()) # True
# MODEL CONV1D-LSTM A
keras.backend.clear_session()
input_ = keras.layers.Input(shape=input_shape)
branch_outputs = []
for i in range(input_shape[-1]):
out = keras.layers.Lambda(lambda x: keras.backend.expand_dims(x[:,:,i],axis=-1))(input_)
out = keras.layers.Conv1D(filters=20,kernel_size=5,strides=2,padding='valid')(out)
branch_outputs.append(out)
out = keras.layers.Concatenate()(branch_outputs)
recursive = keras.layers.LSTM(50,return_sequences=True)(out)
recursive = keras.layers.LSTM(50)(recursive)
out = keras.layers.Dense(10,activation='softmax')(recursive)
mdl_conv_A = keras.models.Model(name='conv1d-lstm',outputs=out)
# MODEL CONV1D-LSTM B
keras.backend.clear_session()
input_ = keras.layers.Input(shape=input_shape)
branch_outputs = []
for i in range(input_shape[-1]):
out = keras.layers.Lambda(lambda x: keras.backend.expand_dims(x[:,activation='softmax')(recursive)
mdl_conv_B = keras.models.Model(name='conv1d-lstm',outputs=out)
print(mdl_conv_A.get_config() == mdl_conv_B.get_config()) # False !?
实现了Result
,因此有很多使用它的方法,例如:
同时循环(Java 6样式):
Iterator<Record>
流(Java 8+样式):
Result result = session.run(query);
List<MyPojo> myList = new ArrayList<>();
while(result.hasNext()) {
Record r = result.next();
myList.add(mapToMyPojo(r));
}
使用 Result.list(Function<Record,T> mapFunction):
Result result = session.run(query);
List<MyPojo> myList = result.stream()
.map(record -> mapToMyPojo(record))
.collect(Collectors.toList());
映射到Java对象非常简单:
Result result = session.run(query);
List<MyPojo> myList = result.list(r -> mapToMyPojo(r));
尽管可以手动使用neo4j-ogm
来代替手动映射结果版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。