小编wan*_*ist的帖子

如何在不违反唯一约束的情况下交换MySQL中两行的值?

我有一个带有优先级列的"任务"表,该列具有唯一约束.

我正在尝试交换两行的优先级值,但我一直违反约束.我在类似的情况下看到了这个声明,但它不是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)

mysql

38
推荐指数
1
解决办法
9540
查看次数

如何在Windows中为Tomcat设置JAVA_OPTS?

我正在尝试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.

tomcat java-opts

24
推荐指数
5
解决办法
13万
查看次数

在数据库中存储有序列表的最佳方法?

在数据库中存储"有序列表"的最佳方法是什么,以便更新它们(添加,删除和更改条目的顺序)很容易?

考虑一个数据库,其中包含用户和电影的表格.每个用户都有一个喜欢的电影列表.

由于许多用户可以喜欢同一部电影,因此我将用户和电影分开,并使用第三张表连接它们,即用户电影.

usermovies包含用户和电影的ID以及"订单号".订单号用于为用户订购电影列表.

例如,用户Josh可能具有以下列表:

  1. 普罗米修斯
  2. 黑衣人3
  3. 独裁者

和用户杰克可能有一个列表,如:

  1. 独裁者
  2. 普罗米修斯
  3. 主力舰
  4. 白雪公主与猎人

因此,他们分享一些收藏,但不一定按照相同的顺序.

我可以使用查询获取每个用户的电影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的电影列表,添加电影,删除它们并更改列表的顺序?

mysql database-design

19
推荐指数
2
解决办法
9765
查看次数

如何在Spring JPA中保存引用现有实体的新实体?

想象一下以下型号:

雇员:

@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 spring jpa spring-data spring-data-jpa

13
推荐指数
1
解决办法
1万
查看次数

何时在Java中选择多个线程进程?

出于什么原因,人们会选择多个线程上的几个进程来实现Java中的应用程序?

我正在重构一个较旧的java应用程序,该应用程序目前分为几个在同一个多核机器上运行的较小的应用程序(进程),通过套接字相互通信.

我个人认为这应该使用线程而不是进程来完成,但是什么参数可以捍卫原始设计?

java concurrency multithreading

8
推荐指数
2
解决办法
1973
查看次数

什么是jpa的Java配置版本:repositories标签?

我正在尝试使用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)

spring spring-data spring-data-jpa

7
推荐指数
1
解决办法
4357
查看次数

过滤集合与Backbone中的多个集合?

何时过滤集合与在Backbone中使用多个集合是否合适?

例如,考虑一个音乐库应用程序.它将具有显示流派的视图和用于显示所选流派的音乐的另一视图.

你宁愿用所有音乐制作一个巨大的集合,然后过滤它或几个较小的音乐?

只有一个集合允许你添加其他属性进行过滤的功能,但是假设你有大量的音乐:如果用户只需要1种类型,你如何防止在应用程序启动时加载它们?

backbone.js

6
推荐指数
1
解决办法
645
查看次数

在Angular 2的路由器中获取当前路由组件的引用?

是否有一种干净的方式来获取当前路线的组件?

这似乎有效,但似乎非常hacky:

 this.router.currentInstruction.
  component.componentType.prototype.somePropertyOrFunction();
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

6
推荐指数
1
解决办法
7265
查看次数

如何让一个视图意识到另一个视图的变化?

假设您正在制作音乐库应用程序.

您有一个带有流派列表的视图,另一个带有所选流派的内容.当用户单击列表上的类型时,应相应地更新另一视图中的内容.

这样做的最佳方法是什么,以便存在最小的依赖性?

我没有找到任何其他地方来听鼠标点击而不是绘制单个类型的视图.我可以从那里发送一个事件,但是获得该事件以更新绘制类型内容的其他视图的最佳方式是什么?谁应该收听该事件,流派内容视图或其集合?

编辑:我从应用程序的路由器实例化两个视图,我确实设法通过让视图相互了解来实现这一点,但这当然不是最佳的.

backbone.js

4
推荐指数
1
解决办法
1731
查看次数

依赖关系未定义 - RequireJS

我正在尝试使用带有RequireJS的OpenLayers库.

问题是,OpenLayers一直被"未定义",即使它被列为我模块的唯一依赖项:

define(['OpenLayers'],function (OpenLayers) {
   console.log(OpenLayers);
});
Run Code Online (Sandbox Code Playgroud)

这将打印"undefined".

如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的.

那么为什么OpenLayers没有被RequireJS加载?

requirejs

2
推荐指数
2
解决办法
3039
查看次数

如何在javascript中分配函数?

我是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功能?

javascript

1
推荐指数
1
解决办法
395
查看次数

为什么jquery在.load()之后没有看到页面中的变化?

我刚尝试用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" - 为什么?

jquery

1
推荐指数
1
解决办法
195
查看次数

让Jersey的JSON POJO支持从嵌入式Jetty开始工作?

我正在尝试使用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输出之前我使用了纯文本并且它工作得很好.

rest json jetty jersey

0
推荐指数
1
解决办法
2406
查看次数