我有一个问题我无法理解.在休眠中,我对以下内容没有任何问题:
@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", allocationSize=500 )
Run Code Online (Sandbox Code Playgroud)
然后在我的schema.ddl中我有这个:
CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
Run Code Online (Sandbox Code Playgroud)
在这里看不多.一切都按预期工作.但是,如果我将提供程序切换到EclipseLink,我会收到此错误:
The sequence named [EMAIL_SEQ_GEN] is setup incorrectly. Its increment does not match its pre-allocation size.
Run Code Online (Sandbox Code Playgroud)
所以当然我谷歌周围看到一些关于EclipseLink创建负数的事情,如果初始值是1并且它应该等于allocationSize.
所以,好吧,所以添加"initialValue = 500"并将我的DDL脚本更新为"START 500"修复了这个问题,但现在我的编号从500开始而不是1.什么给出了?这是一个EclipseLink错误还是我不理解的东西.我想生成从1开始并具有调整到实体的分配大小的序列(在本例中为500).我如何使用EclipseLink执行此操作?
谢谢!
另一种问这个问题的方法是......给出这个DDL:
CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
Run Code Online (Sandbox Code Playgroud)
注释我的实体与EclipseLink一起使用它的正确方法是什么?
如果我让EclipseLink生成我的DDL,那么:
@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", initialValue=1, allocationSize=500 )
Run Code Online (Sandbox Code Playgroud)
会产生这个:
CREATE SEQUENCE EMAIL_SEQ_GEN INCREMENT BY 500 START WITH 500;
Run Code Online (Sandbox Code Playgroud)
哪种意味着使用EclipseLink创建一个"START WITH …
我正在将来自Hibernate的2500条记录插入到一个完全空的MySQL表中.插件需要5分钟!
我用谷歌搜索了几个小时,尝试了一些像自动生成的主键,但似乎没有什么能改善性能.
我的程序的早期版本是同时进行插入(每个线程1个,大约100个线程),这需要大约2分钟.我认为批处理应该可以将性能提高大约10倍,但它似乎已经适得其反.
我正在使用Google Cloud的MySQL和db-f1-micro实例
这是我的表看起来像(只有数据库中的表!):
CREATE TABLE `categories` (
`browse_node` varchar(60) NOT NULL,
`name` varchar(60) DEFAULT NULL,
`path` varchar(400) DEFAULT NULL,
`url` varchar(200) NOT NULL,
`level` int(11) NOT NULL,
PRIMARY KEY (`browse_node`)
)
Run Code Online (Sandbox Code Playgroud)
这是POJO:
package example.com;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* Represents a category from the categories table
*/
@Entity
@Table(name = "categories")
public class Category {
@Id
@Column(name = "browse_node")
private String browseNode;
@Column(name = "name")
private String name;
@Column(name …Run Code Online (Sandbox Code Playgroud)