我正在尝试在“或”和“和”条件中生成带有多个括号的查询,但没有生成内部括号。外部谓词的括号正确生成,但不是内部谓词的括号。代码:
CriteriaBuilder criteriaBuilder = this.getEntityManager().getCriteriaBuilder();
CriteriaQuery<ConfigurationKey> query = criteriaBuilder.createQuery(ConfigurationKey.class);
Root<ConfigurationKey> configurationKeyRoot = query.from(ConfigurationKey.class);
Join<ConfigurationKey, Customer> configurationKeyCustomerJoin = configurationKeyRoot.join(ConfigurationKey_.customer);
final List<Predicate> predicates = new ArrayList<>();
predicates.add(criteriaBuilder.equal(configurationKeyCustomerJoin.get(Customer_.externalId), customerId));
predicates.add(criteriaBuilder.equal(configurationKeyRoot.get(ConfigurationKey_.configType), configType));
final List<Predicate> orPredicates = new ArrayList<>();
keys.forEach((x, y) -> {
orPredicates.add(
criteriaBuilder.and(
criteriaBuilder.equal(configurationKeyRoot.get(ConfigurationKey_.keyType), x),
criteriaBuilder.equal(configurationKeyRoot.get(ConfigurationKey_.keyValue), y)
)
);
}
);
predicates.add(criteriaBuilder.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
query.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
query.select(configurationKeyRoot);
TypedQuery<ConfigurationKey> typedQuery = this.getEntityManager().createQuery(query);
Run Code Online (Sandbox Code Playgroud)
生成的查询:
select
configurat0_.id as id1_1_,
configurat0_.createdAt as createdA2_1_,
configurat0_.updatedAt as updatedA3_1_,
configurat0_.configType as configTy4_1_,
configurat0_.customerId as customer7_1_,
configurat0_.keyType as keyType5_1_,
configurat0_.keyValue as keyValue6_1_ …Run Code Online (Sandbox Code Playgroud) 给定n个列表,我想知道是否有任何两个列表具有完全相同的元素.下面是Java 7中的代码.
public static <T> boolean hasduplicateList(List<List<T>> lists) {
for (List<T> outerList : lists) {
int count = 0;
Set<T> outerSet = new HashSet<>(outerList);
for (List<T> innerList : lists) {
Set<T> innerSet = new HashSet<>(innerList);
if (outerSet.equals(innerSet)) {
count++;
}
if (count == 2) {
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来实现特别使用Java8?
我需要在Android中使用ndk从C++层执行数据库操作.
但是在使用sqlite3_open打开数据库时,我收到"无法打开数据库文件"错误.
我正在使用Java获取数据库路径:
String sqliteDir = getApplicationContext().getDatabasePath("MyDb").getPath();
Run Code Online (Sandbox Code Playgroud)
C++代码:
int rc = sqlite3_open(dbPath, _db);
if(rc != SQLITE3_OK) LOGD("Can't open database: %s with path %s\n", KSqlite3::sqlite3_errmsg(_db), dbPath);
else LOGD(" Opened database successfully %s \n", sqlite3_errmsg(_db));
Run Code Online (Sandbox Code Playgroud)
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myMod
LOCAL_SRC_FILES := myMod.cpp sqlite3.c
LOCAL_LDLIBS := -llog
#Includes various C++ libraries
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
错误消息: 无法打开数据库:无法使用路径/data/data/com.packageName/databases/MyDb打开数据库文件
我正在尝试使用 MVVM 模式学习 RXJava。
这是我试图实现的场景:
在某些搜索事件中,我正在调用 SearchViewModel.handleSearchTopic() ,它正在发出列表,但不知何故它没有被观察者的 onNext 事件捕获。订阅也成功进行。我想我犯了一些简单的错误,请指出。另外,有没有更好的方法来实现这个用例?
搜索视图模型.java
private final BehaviorSubject<List<Topic>> topicList = BehaviorSubject.create();
public void handleSearchTopic() {
List<Topic> list = //getsomehow;
topicList.onNext(list);
}
public Observable<List<Topic>> getTopicListObservable() {
return topicList.asObservable();
}
Run Code Online (Sandbox Code Playgroud)
片段.java
@NonNull
private CompositeSubscription subscription;
@NonNull
private SearchViewModel searchViewModel;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
searchViewModel = new SearchViewModel();
bind();
}
@Override
public void onDestroy() {
unBind();
super.onDestroy();
}
private void bind() {
subscription = new CompositeSubscription();
subscription.add(searchViewModel.getTopicListObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<Topic>>() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) java ×3
android ×1
android-ndk ×1
arraylist ×1
c++ ×1
criteria-api ×1
duplicates ×1
java-8 ×1
jpa ×1
jpa-2.0 ×1
list ×1
mvvm ×1
rx-java ×1
sql ×1
sqlite ×1