我有一个带有优先级列的"任务"表,该列具有唯一约束.
我正在尝试交换两行的优先级值,但我一直违反约束.我在类似的情况下看到了这个声明,但它不是MySQL.
UPDATE tasks
SET priority =
CASE
WHEN priority=2 THEN 3
WHEN priority=3 THEN 2
END
WHERE priority IN (2,3);
Run Code Online (Sandbox Code Playgroud)
这将导致错误:
Error Code: 1062. Duplicate entry '3' for key 'priority_UNIQUE'
Run Code Online (Sandbox Code Playgroud)
是否有可能在不使用虚假值和多个查询的情况下在MySQL中完成此操作?
编辑:
这是表结构:
CREATE TABLE `tasks` (
`id` int(11) NOT NULL,
`name` varchar(200) DEFAULT NULL,
`priority` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `priority_UNIQUE` (`priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud) 我正在尝试JAVA_OPTS在Windows机器上设置Tomcat,但如果我添加多个变量,我会一直收到错误.
例如,这有效:
set JAVA_OPTS="-Xms512M"
Run Code Online (Sandbox Code Playgroud)
但这不是:
set JAVA_OPTS="-Xms512M -Xmx1024M"
Run Code Online (Sandbox Code Playgroud)
它导致错误:
Invalid initial heap size: -Xms512M -Xmx1024M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
就好像我可以设置一个变量(-Xmx也可以)但不是几个.
我正在使用指示setenv.bat文件,我的Tomcat是7.0.35.
在数据库中存储"有序列表"的最佳方法是什么,以便更新它们(添加,删除和更改条目的顺序)很容易?
考虑一个数据库,其中包含用户和电影的表格.每个用户都有一个喜欢的电影列表.
由于许多用户可以喜欢同一部电影,因此我将用户和电影分开,并使用第三张表连接它们,即用户电影.
usermovies包含用户和电影的ID以及"订单号".订单号用于为用户订购电影列表.
例如,用户Josh可能具有以下列表:
和用户杰克可能有一个列表,如:
因此,他们分享一些收藏,但不一定按照相同的顺序.
我可以使用查询获取每个用户的电影ID列表:
SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number
Run Code Online (Sandbox Code Playgroud)
然后,使用有序的movie_ids,我可以使用另一个查询获取电影列表
SELECT name FROM movies WHERE id in (?,?,?) ORDER BY FIELD (id, ?,?,?)
Run Code Online (Sandbox Code Playgroud)
所以查询工作,但更新列表现在看起来真的很复杂 - 是否有更好的方法来存储这些信息,以便很容易获得用户x的电影列表,添加电影,删除它们并更改列表的顺序?
想象一下以下型号:
雇员:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "employee_project", joinColumns = @JoinColumn(name = "Emp_Id"), inverseJoinColumns = @JoinColumn(name = "Proj_id"))
private Set<Project> projects = new HashSet<Project>();
Run Code Online (Sandbox Code Playgroud)
项目:
@ManyToMany(mappedBy = "projects")
private Set<Employee> employees = new HashSet<Employee>();
Run Code Online (Sandbox Code Playgroud)
现在,如果我创建一个引用现有项目并尝试保留该员工的新员工,则会收到错误消息:
detached entity passed to persist: Project
Run Code Online (Sandbox Code Playgroud)
我按如下方式创建员工:
public void createNewEmployee(EmployeeDTO empDTO) {
Employee emp = new Employee();
// add stuff from DTO, including projects
repository.saveAndFlush(emp); // FAILS
}
Run Code Online (Sandbox Code Playgroud)
我更新现有的这样的:
public void updateEmployee(EmployeeDTO empDTO) {
Employee emp = repository.findOne(empDTO.getId());
// set stuff from DTO, including projects …Run Code Online (Sandbox Code Playgroud) 出于什么原因,人们会选择多个线程上的几个进程来实现Java中的应用程序?
我正在重构一个较旧的java应用程序,该应用程序目前分为几个在同一个多核机器上运行的较小的应用程序(进程),通过套接字相互通信.
我个人认为这应该使用线程而不是进程来完成,但是什么参数可以捍卫原始设计?
我正在尝试使用Java配置JPA.
我知道@EnableJpaRepositories相当于jml中的jpa:repositories标签,但我想情况并非如此?
我在我的xml中有这个:
<jpa:repositories base-package="com.myapp.bla.bla" />
Run Code Online (Sandbox Code Playgroud)
但如果我删除它而改为使用
@EnableJpaRepositories("com.myapp.bla.bla")
Run Code Online (Sandbox Code Playgroud)
在我的java配置中,我得到一个例外 - 我认为从1.2.0开始可以用Java配置JPA吗?
编辑:
根异常是:
No bean named 'entityManagerFactory' is defined
Run Code Online (Sandbox Code Playgroud)
我假设异常与我的配置中的这个定义有关,但如上所述,如果我保留xml并将其导入我的java配置,一切都有效.
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setPackagesToScan(new String[] { "com.myapp.bla.bla.model" });
factoryBean.setPersistenceProviderClass(HibernatePersistence.class);
Properties props = new Properties();
props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
factoryBean.setJpaProperties(props);
return factoryBean;
}
Run Code Online (Sandbox Code Playgroud) 何时过滤集合与在Backbone中使用多个集合是否合适?
例如,考虑一个音乐库应用程序.它将具有显示流派的视图和用于显示所选流派的音乐的另一视图.
你宁愿用所有音乐制作一个巨大的集合,然后过滤它或几个较小的音乐?
只有一个集合允许你添加其他属性进行过滤的功能,但是假设你有大量的音乐:如果用户只需要1种类型,你如何防止在应用程序启动时加载它们?
是否有一种干净的方式来获取当前路线的组件?
这似乎有效,但似乎非常hacky:
this.router.currentInstruction.
component.componentType.prototype.somePropertyOrFunction();
Run Code Online (Sandbox Code Playgroud) 假设您正在制作音乐库应用程序.
您有一个带有流派列表的视图,另一个带有所选流派的内容.当用户单击列表上的类型时,应相应地更新另一视图中的内容.
这样做的最佳方法是什么,以便存在最小的依赖性?
我没有找到任何其他地方来听鼠标点击而不是绘制单个类型的视图.我可以从那里发送一个事件,但是获得该事件以更新绘制类型内容的其他视图的最佳方式是什么?谁应该收听该事件,流派内容视图或其集合?
编辑:我从应用程序的路由器实例化两个视图,我确实设法通过让视图相互了解来实现这一点,但这当然不是最佳的.
我正在尝试使用带有RequireJS的OpenLayers库.
问题是,OpenLayers一直被"未定义",即使它被列为我模块的唯一依赖项:
define(['OpenLayers'],function (OpenLayers) {
console.log(OpenLayers);
});
Run Code Online (Sandbox Code Playgroud)
这将打印"undefined".
如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的.
那么为什么OpenLayers没有被RequireJS加载?
我是Javascript的新手,我刚刚发现了用于定义对象函数的属性关键字.我尝试使用对象重构我的websocket实验,但我无法让它工作.
这工作(没有对象):
var ws = new WebSocket(something, somethingelse);
ws.onopen = function() {
ws.send("hello");
console.log("works");
}
Run Code Online (Sandbox Code Playgroud)
但这不是:
function MyObject() {
this.ws = new WebSocket(something, somethingelse);
this.ws.onopen = this.onOpen;
}
MyObject.prototype.onOpen = function() {
this.ws.send("hello"); // undefined!
};
Run Code Online (Sandbox Code Playgroud)
为什么ws未定义?我是否错误地分配了onOpen功能?
我刚尝试用jQuery的.load方法改变我的页面内容.
虽然内容改变没有问题,但我发现如果我试图选择一些东西,jQuery仍然"看到"旧内容,例如:
页:
<div id="mycontentarea">
<div id="myfirstcontent"></div>
<div id="mysecondcontent"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
替换内容:
<div id=mythirdcontent"></div>
<div id=myfourthcontent"></div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
// replace original content
$('#mycontentarea').load('replacement.html');
// print out the id of the first child
console.log($("#mycontentarea").children().attr("id"));
Run Code Online (Sandbox Code Playgroud)
控制台将打印出"myfirstcontent"而不是"mythirdcontent" - 为什么?
我正在尝试使用Jersey从我的Jetty服务器获取一个简单的JSON格式对象.
我一直收到错误:
SEVERE: A message body writer for Java class my.package.resources.Album, and Java type class my.package.resources.Album, and MIME media type application/json was not found
Run Code Online (Sandbox Code Playgroud)
一个问题是我不确定将POJOMappingFeature放在Jetty的哪个位置,我尝试了以下但是没有更改错误:
myServletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Run Code Online (Sandbox Code Playgroud)
和
myServletContextHandler.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Run Code Online (Sandbox Code Playgroud)
我知道Jersey的基本REST功能正在运行,因为在我尝试使用JSON输出之前我使用了纯文本并且它工作得很好.
backbone.js ×2
java ×2
mysql ×2
spring ×2
spring-data ×2
angular ×1
concurrency ×1
java-opts ×1
javascript ×1
jersey ×1
jetty ×1
jpa ×1
jquery ×1
json ×1
requirejs ×1
rest ×1
tomcat ×1