我有遗留代码,我试图映射到新代码.
OLD_PERSON
pid
sid
name
age
NEW_PERSON
pid
sid
fid
age
RESOLVE_PERSON
pid
fid
status
Run Code Online (Sandbox Code Playgroud)
Java类
domain.Person {
ID _id;
String _name;
Integer _age;
}
Run Code Online (Sandbox Code Playgroud)
在传统世界中,只有一个表:OLD_TABLE.hibernate映射很简单,只有一个类及其列.在新的世界中,我必须使用上面的3个表并生成一个实体,其中名称来自OLD_PERSON,年龄来自NEW_PERSON.所以基本上SQL查询是:
select op.name as name, np.age as age
from OLD_PERSON op
INNER JOIN RESOLVE_PERSON rp
on rp.pid = op.pid
INNER JOIN NEW_PERSON np
on np.pid = rp.pid and np.fid = rp.fid and np.sid = op.sid
where rp.status = 'CURRENT'
Run Code Online (Sandbox Code Playgroud)
经过研究/谷歌搜索,我发现我可以使用"辅助表",它相当于hibernate xml中的"JOIN表".注意:我不能使用注释,因为这段代码很旧,我仍然在使用hibernate3.5.6.
所以我在映射文件中添加了一个连接表:
<class name="domain.Person" table="OLD_PERSON">
<composite-id name="_id" class="Id">
<key-property access="property" …Run Code Online (Sandbox Code Playgroud) 这更像是一个逻辑问题.我在网页上有一个复选框,我将其值从servlet请求参数存储在一个布尔对象(Java)中.逻辑是,如果复选框的请求参数不为null,则使对象为true,否则为null.再次调用页面时,如果其存储值为true,则将复选框标记为"已选中".
this.checkbox = (servlet.getParameter("checkbox")!=null && servlet.getParameter("checkbox").contentEquals("on"))?true:null;
Run Code Online (Sandbox Code Playgroud)
当我坚持该复选框对象时,问题就开始了.我首先使用持久化数据填充页面,然后使用servlet值填充它.如果复选框值在数据库中存储为true,并且用户在页面上取消选中它并提交它,因为复选框的servlet参数变为null,我无法使复选框为null.因此,复选框始终显示持久值,因为它永远不会被覆盖.所以有人可以建议我如何填充对象值的逻辑变化?
我正在尝试创建可由所有DAO扩展的BaseDAO接口。该项目在mongodb中使用spring-data。问题是,如果我让所有单独的DAO扩展MongoRepository而不编写一个Implementation类,那么一切工作正常。但是,如果我尝试使用泛型将MongoRepository添加到BaseDAO界面,则该应用程序将无法正常工作,因为实例化SimpleMongoRepository所需的参数为null。这是我到目前为止的代码:
BaseDAO.java
import com.test.mongodb.BaseEntity;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.repository.NoRepositoryBean;
import java.io.Serializable;
@NoRepositoryBean
public interface BaseDAO<T extends BaseEntity, ID extends Serializable> extends MongoRepository<T, ID> {
public T getTestObject(ID id);
}
Run Code Online (Sandbox Code Playgroud)
BaseDAOImpl.java
import com.test.mongodb.BaseEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.repository.query.EntityInformationCreator;
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
import org.springframework.data.mongodb.repository.support.SimpleMongoRepository;
import org.springframework.data.repository.NoRepositoryBean;
import java.io.Serializable;
@NoRepositoryBean
public class BaseDAOImpl<T extends BaseEntity, ID extends Serializable> extends SimpleMongoRepository<T,
ID> implements BaseDAO<T, ID> {
@Autowired
private static MongoTemplate mongoTemplate;
@Autowired
private static EntityInformationCreator entityInformationCreator;
public BaseDAOImpl(Class<T> type){
super((MongoEntityInformation<T, ID>) entityInformationCreator.getEntityInformation(type), mongoTemplate);
}
@Override …Run Code Online (Sandbox Code Playgroud) 我正在做一个关于将数据从共享网络驱动器导入HDFS的方法的POC。数据将位于共享驱动器上的不同文件夹中,并且每个文件夹将对应于HDFS上的不同目录。我看了一些执行此操作的流行工具,但其中大多数用于移动小数据而不是整个文件。这些是我发现的工具,还有其他工具吗?
Apache Flume:如果只有少数生产服务器在生产数据,并且不需要实时写出数据,那么仅通过Web HDFS或NFS将数据移至HDFS也是有意义的。写入的数据量相对较少-每几个小时几个GB的文件不会损害HDFS。在这种情况下,规划,配置和部署Flume可能不值得。实际上,Flume旨在实时推送事件,数据流是连续的,并且其数量也相当大。[safari在线上的水烟书和水烟食谱]
Apache Kafka:生产者-消费者模型:消息将保留在磁盘上并在群集内复制,以防止数据丢失。每个代理都可以处理TB级的消息,而不会影响性能。
Amazon Kinesis:像Flume这样的实时数据的付费版本
WEB HDFS:提交HTTP PUT请求,而不会自动跟随重定向,也不会发送文件数据。使用“位置”标头中的URL提交另一个HTTP PUT请求以及要写入的文件数据。[ http://hadoop.apache.org/docs/r1.0.4/webhdfs.html#CREATE]
开源项目: https ://github.com/alexholmes/hdfs-file-slurper
我的要求很简单:
是否可以通过按钮打开和关闭整个树?
我知道为了打开树的所有节点和子节点,我必须调用open_all函数,如: $("#tree").jstree('open_all');
并且为了切换节点:$("#tree").jstree("toggle_node","#1");其中#1是第一个孩子的id.
但是切换功能不会扩展节点的所有子节点.它也没有打开一棵半开的树.我可以在按钮单击时调用open_all和close_all,但是如何找到要调用的方法,如图中是否必须打开或关闭树?
我有一个角度应用程序,在env.js文件中定义了一些全局环境变量:
(function(sp) {
'use strict';
pk.env = pk.env || {};
// localhost
pk.env.baseUrl = 'http://localhost:8080/';
})(typeof exports === 'undefined' ? (this.pk = this.pk || {}) : exports);
Run Code Online (Sandbox Code Playgroud)
这些变量在多个工厂中用于进行REST API调用:
'use strict';
angular.module('pkApp').factory('pkFactory', PKFactory);
function PKFactory($http) {
var urlBase = pk.env.baseUrl;
var apiUrl = 'v1/data';
var _pkFactory = {};
_pkFactory.getData = function() {
return $http.get(urlBase + apiUrl);
};
return _pkFactory;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Jasmine为这个工厂编写单元测试,我不断收到错误:
ReferenceError:找不到变量:pk
如果我从工厂中删除此变量引用,测试运行正常.
'use strict';
console.log('=== In pk.factory.spec');
describe('Unit: pkFactory', function() {
beforeEach(module("pkApp"));
var $httpBackend, $rootScope, pkFactory;
beforeEach(inject(function($injector) {
// …Run Code Online (Sandbox Code Playgroud) 有没有办法创建Servlet(页面显示 - 表单)并使用相同的类处理它?
如果浏览器请求http://mypage.com/TestServlet - 则显示表单输入页面,当用户提交表单时,将调用相同的servlet操作(../TestServlet)并处理输入.我实际上将输入处理逻辑放在Servlet的doGet()方法中,现在当我调用http://mypage.com/TestServlet时,逻辑将被自动调用null值.我知道我实际上可以创建一个JSP或HTML页面,然后从那里调用Servlet,但我不想这样做.有没有办法调用Servlet的特定方法?就像在单击Submit按钮时调用该方法来处理用户输入并保持doGet()方法显示输入表单一样.
java ×2
servlets ×2
angularjs ×1
apache-apex ×1
checkboxlist ×1
forms ×1
hadoop ×1
hdfs ×1
hibernate ×1
inner-join ×1
jasmine ×1
javascript ×1
jquery ×1
jstree ×1
mongodb ×1
spring ×1
spring-data ×1
static ×1