我创建了一个类,它Observable使用interval运算符设置了一个可暂停的 RxJS :
export class RepeatingServiceCall<T> {
private paused = false;
private observable: Observable<T>;
constructor(serviceCall: () => Observable<T>, delay: number) {
this.observable = interval(delay).pipe(flatMap(() => (!this.paused ? serviceCall() : NEVER)));
}
setPaused(paused: boolean) {
this.paused = paused;
}
getObservable() {
return observable;
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我试图解决的问题是我希望计时器在取消暂停时重置。所以,假设interval时间是最后一次interval发出后 10 秒和 5 秒,setPaused(false)被调用。在那种情况下,我希望它立即发出,然后重新启动计时器。
添加这样的东西会很容易吗?
假设我有一个函数Object f(String a, String b),我想调用两个不同的函数,这些函数返回Optional Strings以获取f Optional<String> getA()和的参数Optional<String> getB()。我可以想到两个解决方案,但是看起来都不是很干净,尤其是当您有更多参数时:
1:
return getA().flatMap(
a -> getB().map(
b -> f(a,b)).get()
Run Code Online (Sandbox Code Playgroud)
2:
Optional<String> a = getA();
Optional<String> b = getB();
if(a.isPresent() && b.isPresent()) {
return f(a.get(), b.get());
}
Run Code Online (Sandbox Code Playgroud)
有没有更清洁的方法可以做到这一点?
我试图使用hibernate的实体管理器从db2数据库调用存储过程,并将结果作为对象返回.我正在使用hibernate似乎找不到的@NamedStoredProcedureQuery注释.我收到错误:"没有找到具有该名称的@NamedStoredProcedureQuery:Create_Division".任何想法都会很棒.
豆子:
<bean id="entityManagerFactoryBean" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="demoJPAUnit" />
<property name="packagesToScan">
<list>
<value>com.merchantBoarding.db2.queryObjects</value>
</list>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.archive.autodetection">class,hbm</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryBean" />
</bean>
Run Code Online (Sandbox Code Playgroud)
查询输出对象:
@NamedStoredProcedureQuery(
name="Create_Division",
procedureName="MD.PMDBD017",
resultClasses = {CreateDivisionResult.class},
parameters={
@StoredProcedureParameter(name="IN_ENTY",mode=ParameterMode.IN,type=Integer.class),
@StoredProcedureParameter(name="IN_PARNT_ENTY",mode=ParameterMode.IN,type=Integer.class),
@StoredProcedureParameter(name="IN_ACTION",mode=ParameterMode.IN,type=String.class),
@StoredProcedureParameter(name="IN_ENTY_XREF",mode=ParameterMode.IN,type=String.class),
@StoredProcedureParameter(name="OUT_ENTY",mode=ParameterMode.OUT,type=Integer.class),
@StoredProcedureParameter(name="OUT_ID",mode=ParameterMode.OUT,type=String.class),
@StoredProcedureParameter(name="OUT_ENTY_XREF",mode=ParameterMode.OUT,type=String.class),
@StoredProcedureParameter(name="OUT_SQLCODE",mode=ParameterMode.OUT,type=Integer.class),
@StoredProcedureParameter(name="OUT_STATUS",mode=ParameterMode.OUT,type=String.class),
@StoredProcedureParameter(name="OUT_ERRORTEXT",mode=ParameterMode.OUT,type=String.class),
}
)
public class CreateDivisionResult implements Serializable {
@Id
public String OUT_ENTY;
public String OUT_ID; …Run Code Online (Sandbox Code Playgroud)