这是我的pojo注释为实体
@Entity
@Table(name = "book", catalog = "book_db")
public class Book {
private Integer bookId;
private String bookName;
private String bookShortDesc;
private String bookDesc;
private String bookAuthor;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "book_id", unique = true, nullable = false)
public Integer getBookId() {
return this.bookId;
}
@Column(name = "book_name", nullable = false, length = 256)
public String getBookName() {
return this.bookName;
}
@Column(name = "book_short_desc", nullable = false, length = 1024)
public String getBookShortDesc() {
return this.bookShortDesc;
} …Run Code Online (Sandbox Code Playgroud) 如何在Java中将值从Enum1转换为Enum 2?这是我正在尝试做的一个例子:
public enum Enum1 {
ONE,
TWO,
THREE;
}
public enum Enum2 {
FOUR,
FIVE,
SIX;
}
Run Code Online (Sandbox Code Playgroud)
所以我想做这样的事情:
Enum2 en2 = (Enum2)ONE;
Run Code Online (Sandbox Code Playgroud)
有可能,我该怎么做?
提前致谢!
如何在不使用存储过程的情况下编写在MySql中运行n次的循环.
这是我使用存储过程的方式:
DELIMITER $$
DROP PROCEDURE IF EXISTS test$$
CREATE PROCEDURE test()
BEGIN
DECLARE count INT DEFAULT 0;
WHILE count < 10 DO
/**Sql statement**/
SET count = count + 1;
END WHILE;
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
然后我以这种方式执行我的程序:
call test();
Run Code Online (Sandbox Code Playgroud)
如果我删除存储过程并运行正常查询,则失败并显示以下错误:
1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在'DECLARE count INT DEFAULT 0附近使用正确的语法; 在第2行计数<10 DO
我已经通过互联网查找了没有运气的解决方案.
根据评论编辑:
上面的存储过程完全符合我的要求:它循环10次并执行我的sql语句.现在我想在不使用存储过程的情况下完成同样的事情.就像是:
DECLARE count INT DEFAULT 0;
WHILE count < 10 DO
/**Sql statement**/
SET count = count + 1;
END WHILE;
Run Code Online (Sandbox Code Playgroud) 我目前正在使用此查询(在SQL Server中)每天计算唯一项目的数量:
SELECT Date, COUNT(DISTINCT item)
FROM myTable
GROUP BY Date
ORDER BY Date
Run Code Online (Sandbox Code Playgroud)
如何对此进行转换以获取过去3天(包括当天)中每个日期的唯一商品数量?
输出应该是一个包含2列的表:一列包含原始表中的所有日期.在第二列,我们有每个日期的唯一项目数.
例如,如果原始表是:
Date Item
01/01/2018 A
01/01/2018 B
02/01/2018 C
03/01/2018 C
04/01/2018 C
Run Code Online (Sandbox Code Playgroud)
根据我上面的查询,我目前获得每天的唯一计数:
Date count
01/01/2018 2
02/01/2018 1
03/01/2018 1
04/01/2018 1
Run Code Online (Sandbox Code Playgroud)
我希望得到3天滚动窗口的独特计数:
Date count
01/01/2018 2
02/01/2018 3 (because items ABC on 1st and 2nd Jan)
03/01/2018 3 (because items ABC on 1st,2nd,3rd Jan)
04/01/2018 1 (because only item C on 2nd,3rd,4th Jan)
Run Code Online (Sandbox Code Playgroud) 我需要将HTML转换为纯文本.我对格式化的唯一要求是在纯文本中保留新行.新行不仅应显示在<br>其他标签的情况下,例如<tr/>,也应显示</p>新行.
用于测试的示例HTML页面是:
请注意,这些只是随机网址.
我已经尝试了在这个StackOverflow问题的答案中提到的各种库(JSoup,Javax.swing,Apache utils)来将HTML转换为纯文本.
使用JSoup的示例:
public class JSoupTest {
@Test
public void SimpleParse() {
try {
Document doc = Jsoup.connect("http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter09/scannerConsole.html").get();
System.out.print(doc.text());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
HTMLEditorKit示例:
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
public class Html2Text extends HTMLEditorKit.ParserCallback {
StringBuffer s;
public Html2Text() {}
public void parse(Reader in) throws IOException {
s = new StringBuffer();
ParserDelegator delegator = new ParserDelegator();
// the …Run Code Online (Sandbox Code Playgroud) 给定一个Java类,我希望能够列出在所有祖先中公开的所有属性,并public以相同的方式递归遍历所有公开的属性(即或使用getter/setter).
用一个简单的例子更容易解释:
public class BaseClass1 {
private int intProperty; // has getter and setter (not shown)
}
public class SubClass1 extends BaseClass1 {
private int privateSoNotListed;
public SubClass2 subClass2Property;
}
public class BaseClass2 {
public String stringProperty;
}
public class SubClass2 extends BaseClass2 {
private long longProperty; // has getter and setter (not shown)
}
Run Code Online (Sandbox Code Playgroud)
鉴于SubClass1上面的输入,输出会是这样的:
intProperty - int [from BaseClass1]
subClass2Property.stringProperty - String [from BaseClass2]
subClass2Property.longProperty - long [from SubClass2]
Run Code Online (Sandbox Code Playgroud)
应该可以使用一些巧妙的反射来写这样的东西,但我宁愿不重新发明轮子 - 是否有现成的工具可以做到这一点(也许是一个Eclipse插件?)
编辑: Eclipse的类型层次结构可以很好地显示单个类的属性 …
我需要一个非静态实例方法来返回多个值.举个简单的例子起见,让我们说的这些都是boolean success和Object obj-但在一般情况下,有可能是更多,他们可能是彼此无关.可以想到几种不同的方法:
解决方案1
private boolean aMethod(int aParam, Object obj) { ...set obj parameter & return value... }
Run Code Online (Sandbox Code Playgroud)
解决方案2
private Pair<Boolean, Object> aMethod(int aParam) { ...set return pair values... }
Run Code Online (Sandbox Code Playgroud)
解决方案3
private Object obj;
...
private boolean aMethod(int aParam) { ...set obj field & return value... }
Run Code Online (Sandbox Code Playgroud)
解决方案4
private class MethodReturn { // Nested class - could be a separate class instead
boolean success;
Object obj;
// ... Getters and setters omitted for brevity
}
private …Run Code Online (Sandbox Code Playgroud) 我有4个表:users,posts,categories,categories_map
posts有id,text,category_id
categories_map包含user_id和category_id
我的目标是创建一个用户可以预览的队列.此外,用户将能够跳过一些帖子或编辑其中的文本.如果用户跳过帖子,它将永远不会出现在队列中.但是,用户无法更改序列,因为cron将执行脚本.
第一种方法,我认为是创建包含一个表
user_id,post_id,text_modified,is_skipped,last_posted.因此,当执行cron作业时,它将留下时间戳,因此下次不会抓取此帖子,用户可以轻松更改此帖子的文本.
第二种方法是创建一个队列会为用户生成一个单独的表user_id,post_id,category_id,text_modified.因此,cron作业可以轻松地跟随此表并在完成后删除该行.但是使用这种方法,如果我有30个用户,平均有3个类别,每个包含5000个帖子,我的表已经有450000行.是的,如果它被正确索引,它应该都是好的.但是当我有100-200个用户时,它是否可以扩展?
我应该采取哪种方法,还是有其他解决方案?
我正在学习Java和Hibernate.现在,我无法理解如何使用自定义物理命名策略:虽然PhysicalNamingStrategy对象确实是实例化的,但是从不调用toPhysicalTableName或者toPhysicalColumnName调用方法 - 至少我没有看到调试器.
版本:Java 1.8,Hibernate 5.2.10.Final,在macOS 10.12上.
这是一个最小的项目:
@Entity
public class Cake {
@Id
private long id;
private String name;
private String FLAVOUR;
private int sErViNg;
public Cake(String name, String flavour, int serving) {
this.name = name;
this.FLAVOUR = flavour;
this.sErViNg = serving;
}
// getters and setters
Run Code Online (Sandbox Code Playgroud)
public class Main {
public static void main (String[] args) {
Transaction tx = null;
try (
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession(); …Run Code Online (Sandbox Code Playgroud) 我使用下面的代码为id字段生成唯一ID .它工作正常,直到上周.我使用Hibernate接口删除了一些实体,然后当我尝试插入新记录时,它开始给出一个唯一的约束违例异常.
可能是什么导致了这个问题?
@SequenceGenerator(name = "ParamGenerator", sequenceName = "ParamSequence", allocationSize = 1)
public class Param extends IdNameEntity<Long> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ParamGenerator")
private Long id;
Run Code Online (Sandbox Code Playgroud)
这是删除方法:
@Override
public void delete(final T t) {
getCurrentSession().delete(t);
}
Run Code Online (Sandbox Code Playgroud)
这是错误日志:
2018-04-25 16:34:41 [http-nio-8081-exec-3] INFO o.h.e.j.b.internal.AbstractBatchImpl - HHH000010: On release of batch it still contained JDBC statements
2018-04-25 16:34:41 [http-nio-8081-exec-3] ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [could not execute statement]
2018-04-25 …Run Code Online (Sandbox Code Playgroud)