我有一个D3直方图,我在其上附加了一个'onclick'事件:
...
var bar = svg.selectAll(".bar")
.data(data)
.enter().append("g")
.attr("class", "bar")
.attr("transform", function(d) { return "translate(" + x(d.x) + "," + y(d.y) + ")"; })
.on('mouseover', tip.show)
.on('mouseout', tip.hide)
.on('click', function(d,i){ //do stuff });
...
Run Code Online (Sandbox Code Playgroud)
这完全符合预期.我还想在图表的背景上添加一个'onclick'事件(即图表中不是条形图的任何地方),但我遇到了麻烦.我尝试过以几种方式附加事件,但在每种情况下,这个新事件似乎都会覆盖我的条形图:
一些尝试:
$("svg:not('.bar')").on("click", function(){ //do stuff });
$("g:not('.bar')").on("click", function(){ //do stuff });
var svg = d3.select("#histogram_block").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
.on("click", function(d,i){
if (d) { //do stuff} …
Run Code Online (Sandbox Code Playgroud) 我有一个扩展的通用Spring Data存储库接口QuerydslBinderCustomizer
,允许我自定义查询执行.我正在尝试将内置的基本相等性测试扩展到默认存储库实现中,以便我可以使用Spring Data REST执行其他查询操作.例如:
GET /api/persons?name=Joe%20Smith // This works by default
GET /api/persons?nameEndsWith=Smith // This requires custom parameter binding.
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我创建的实体路径的每个别名似乎都覆盖了前面的别名绑定.
@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable>
extends PagingAndSortingRepository<T, ID>, QueryDslPredicateExecutor<T>, QuerydslBinderCustomizer {
@Override
@SuppressWarnings("unchecked")
default void customize(QuerydslBindings bindings, EntityPath entityPath){
Class<T> model = entityPath.getType();
Path<T> root = entityPath.getRoot();
for (Field field: model.getDeclaredFields()){
if (field.isSynthetic()) continue;
Class<?> fieldType = field.getType();
if (fieldType.isAssignableFrom(String.class)){
// This binding works by itself, but not after the next one is added
bindings.bind(Expressions.stringPath(root, field.getName())) …
Run Code Online (Sandbox Code Playgroud) TL; DR:如何使用Spring Data JPA中的规范复制JPQL Join-Fetch操作?
我正在尝试构建一个类,它将使用Spring Data JPA处理JPA实体的动态查询构建.为此,我定义了许多创建Predicate
对象的方法(例如在Spring Data JPA文档和其他地方建议的),然后在提交适当的查询参数时将它们链接起来.我的一些实体与帮助描述它们的其他实体具有一对多的关系,这些实体在查询时被急切地获取并且合并到用于DTO创建的集合或地图中.一个简化的例子:
@Entity
public class Gene {
@Id
@Column(name="entrez_gene_id")
privateLong id;
@Column(name="gene_symbol")
private String symbol;
@Column(name="species")
private String species;
@OneToMany(mappedBy="gene", fetch=FetchType.EAGER)
private Set<GeneSymbolAlias> aliases;
@OneToMany(mappedBy="gene", fetch=FetchType.EAGER)
private Set<GeneAttributes> attributes;
// etc...
}
@Entity
public class GeneSymbolAlias {
@Id
@Column(name = "alias_id")
private Long id;
@Column(name="gene_symbol")
private String symbol;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="entrez_gene_id")
private Gene gene;
// etc...
}
Run Code Online (Sandbox Code Playgroud)
查询字符串参数作为键值对从Controller
类传递到Service
类,在那里它们被处理并组装成Predicates
:
@Service
public class GeneService …
Run Code Online (Sandbox Code Playgroud) 我一直在努力改善现有Oracle数据库驱动的应用程序的查询时间,该应用程序运行有点迟缓.应用程序执行几个大型查询,例如下面的查询,这可能需要一个多小时才能运行.在下面的查询中替换DISTINCT
with a GROUP BY
子句会将执行时间从100分缩短到10秒.我的理解是,SELECT DISTINCT
并GROUP BY
以几乎相同的方式运作.为什么执行时间之间存在如此巨大的差距?查询在后端执行的方式有何不同?是否存在SELECT DISTINCT
运行速度更快的情况?
注意:在以下查询中,WHERE TASK_INVENTORY_STEP.STEP_TYPE = 'TYPE A'
只表示可以过滤结果的多种方法之一.提供此示例是为了显示加入所有未包含列的表的原因SELECT
,并将导致所有可用数据的十分之一
SQL使用DISTINCT
:
SELECT DISTINCT
ITEMS.ITEM_ID,
ITEMS.ITEM_CODE,
ITEMS.ITEMTYPE,
ITEM_TRANSACTIONS.STATUS,
(SELECT COUNT(PKID)
FROM ITEM_PARENTS
WHERE PARENT_ITEM_ID = ITEMS.ITEM_ID
) AS CHILD_COUNT
FROM
ITEMS
INNER JOIN ITEM_TRANSACTIONS
ON ITEMS.ITEM_ID = ITEM_TRANSACTIONS.ITEM_ID
AND ITEM_TRANSACTIONS.FLAG = 1
LEFT OUTER JOIN ITEM_METADATA
ON ITEMS.ITEM_ID = ITEM_METADATA.ITEM_ID
LEFT OUTER JOIN JOB_INVENTORY
ON ITEMS.ITEM_ID = JOB_INVENTORY.ITEM_ID
LEFT OUTER JOIN JOB_TASK_INVENTORY
ON JOB_INVENTORY.JOB_ITEM_ID …
Run Code Online (Sandbox Code Playgroud) 我正在将Spring Platform 1.1.3.RELEASE的应用程序更新为2.0.1.RELEASE,它将Spring Framework版本从4.1.7升级到4.2.4,将Jackson从2.4.6升级到2.6.4.Spring或Jackson处理自定义HttpMessageConverter
实现似乎没有任何重大变化,但我的自定义JSON序列化未能发生,我无法确定原因.以下在Spring Platform版本中可以正常工作:
模型
@JsonFilter("fieldFilter")
public class MyModel {
/*model fields and methods*/
}
Run Code Online (Sandbox Code Playgroud)
模型包装
public class ResponseEnvelope {
private Set<String> fieldSet;
private Set<String> exclude;
private Object entity;
public ResponseEnvelope(Object entity) {
this.entity = entity;
}
public ResponseEnvelope(Object entity, Set<String> fieldSet, Set<String> exclude) {
this.fieldSet = fieldSet;
this.exclude = exclude;
this.entity = entity;
}
public Object getEntity() {
return entity;
}
@JsonIgnore
public Set<String> getFieldSet() {
return fieldSet;
}
@JsonIgnore
public Set<String> getExclude() {
return exclude; …
Run Code Online (Sandbox Code Playgroud) 我有一个项目利用Spring Data(在这个例子中是MongoDB)与具有相同模式的多个数据库进行交互.这意味着每个数据库使用相同的实体和存储库类.所以,例如:
public class Thing {
private String id;
private String name;
private String type;
// etc...
}
public interface ThingRepository extends PagingAndSortingRepository<Thing, String> {
List<Thing> findByName(String name);
}
@Configuration
@EnableMongoRepositories(basePackageClasses = { ThingRepository.class })
public MongoConfig extends AbstractMongoConfiguration {
// Standard mongo config
}
Run Code Online (Sandbox Code Playgroud)
如果我连接到单个数据库,这可以正常工作,但是当我想同时连接到多个数据库时,事情会变得更复杂:
@Configuration
@EnableMongoRepositories(basePackageClasses = { ThingRepository.class },
mongoTemplateRef = "mongoTemplateOne")
public MongoConfigOne extends AbstractMongoConfiguration {
@Override
@Bean(name = "mongoTemplateOne")
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(this.mongo(), "db_one");
}
// Remaining standard mongo config …
Run Code Online (Sandbox Code Playgroud) 我偶然发现了这个问题,解释了如何在使用单个命令从命令行调用Spring Shell应用程序后退出.但是,使用Spring Boot在2.0.0中测试它,似乎不再是用命令参数调用JAR将执行该命令然后退出的情况.shell只是正常启动而不执行提供的命令.是否仍然可以这样做?如果没有,是否可以将参数从JAR执行传递给Spring Shell,然后在执行后触发退出?
例如,假设我有一个命令,import
它有几个选项.它可以在shell中运行,如下所示:
$ java -jar my-app.jar
> import -f /path/to/file.txt --overwrite
Successfully imported 'file.txt'
> exit
Run Code Online (Sandbox Code Playgroud)
但是为了构建一个可以利用这个功能的脚本,能够简单地执行和退出会很好:
$ java -jar my-app.jar import -f /path/to/file.txt --overwrite
Successfully imported 'file.txt'
Run Code Online (Sandbox Code Playgroud) 我是Hibernate的新手,我的配置存在一些问题.我正在尝试建立与先前存在的Oracle数据库的只读连接.我不想Hibernate来执行任何DML/DDL和修改数据库架构,但每次我尝试部署我的项目的时候,这是我看到的消息:
INFO: updating schema
SEVERE: Unsuccessful: create table WILLOEM.SAMPLE_INFO (SAMPLE_ID varchar2(255) not null, CELL_LINE varchar2(255), STUDY_ID varchar2(255), primary key (SAMPLE_ID))
SEVERE: ORA-00955: name is already used by an existing object
Run Code Online (Sandbox Code Playgroud)
这里没有造成任何损坏,因为表创建失败了,但我不想创建数据可能丢失的情况.如何配置Hibernate以只读方式运行?我是否可以完全阻止语句执行,而无需添加缺少权限的新Oracle用户?
这是我目前的Hibernate配置:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>
<property name="url"><value>jdbc:oracle:thin:@source.db.somewhere.com:1524:WILLOEM</value></property>
<property name="username"><value>username</value></property>
<property name="password"><value>password</value></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="packagesToScan" value="com.willoem.project.hibernate" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
Run Code Online (Sandbox Code Playgroud) 这是一个两部分问题:
1)是否可以使用select语句根据其ROWID
或其他标识符检索数据所在分区的名称?
例如.
SELECT DATA_ID, CATEGORY, VALUE, **PARTITION_NAME**
FROM MYTABLE
WHERE CATEGORY = 'ABC'
Run Code Online (Sandbox Code Playgroud)
2)是否可以截断表的单个分区,而不删除存储在其他分区中的数据?
我有一个超过十亿行的表,按类别划分哈希.只有少数类别的数据存在问题,因此重新创建整个表没有意义,但删除表中的数据,即使所有约束都处于非活动状态,也需要花费太长时间.
java ×6
oracle ×3
spring ×3
spring-data ×2
spring-mvc ×2
sql ×2
criteria-api ×1
d3.js ×1
database ×1
distinct ×1
group-by ×1
hibernate ×1
jackson ×1
javascript ×1
jpa ×1
jquery ×1
json ×1
mongodb ×1
partitioning ×1
performance ×1
querydsl ×1
spring-boot ×1
spring-shell ×1