- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含以下字段的 Derby 数据库表。数据库ID字段自动生成并递增。
create table "Yaya".SERVICELOG
(
ID INTEGER default AUTOINCREMENT: start 1 increment 1 not null primary key,
TXTIME TIMESTAMP,
EVENTLEVEL INTEGER,
EVENTTYPE VARCHAR(255),
DESCRIPTION VARCHAR(4096)
)
使用 NetBeans 我正在尝试使用 Hibernate 作为 ORM。我以前使用过 Linq2SQL 和 EF...这变得很痛苦。
这是我生成的 POJO,我相信注释是正确的。
// Generated Sep 19, 2014 12:26:20 PM by Hibernate Tools 4.3.1
import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
* Servicelog generated by hbm2java
*/
public class Servicelog implements java.io.Serializable {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private Date txtime;
private Integer eventlevel;
private String eventtype;
private String description;
public Servicelog() {
}
public Servicelog(int id) {
this.id = id;
}
public Servicelog(int id, Date txtime, Integer eventlevel, String eventtype, String description) {
this.id = id;
this.txtime = txtime;
this.eventlevel = eventlevel;
this.eventtype = eventtype;
this.description = description;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public Date getTxtime() {
return this.txtime;
}
public void setTxtime(Date txtime) {
this.txtime = txtime;
}
public Integer getEventlevel() {
return this.eventlevel;
}
public void setEventlevel(Integer eventlevel) {
this.eventlevel = eventlevel;
}
public String getEventtype() {
return this.eventtype;
}
public void setEventtype(String eventtype) {
this.eventtype = eventtype;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
}
这是我的插入代码。
Session session = StartupBean.sessionFactory.openSession();
session.beginTransaction();
Servicelog sl = new Servicelog();
sl.setDescription("IN IT TO WIN IT");
session.save(sl);
session.getTransaction().commit();
session.close();
它在 glassfish 服务器控制台中的 session.getTransaction().commit();
Info: HHH000041: Configured SessionFactory: null WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!) Info: HHH000401: using driver [org.apache.derby.jdbc.ClientDriver] at URL [jdbc:derby://localhost:1527/yayadb] Info: HHH000046: Connection properties: {user=yayaadmin, password=****} Info:
HHH000006: Autocommit mode: false Info: HHH000115: Hibernate connection pool size: 20 (min=1) Info: HHH000400: Using dialect: org.hibernate.dialect.DerbyDialect WARN: HHH000430: The DerbyDialect dialect has been deprecated; use one of the version-specific dialects instead Info: HHH000399: Using default transaction strategy (direct JDBC transactions) Info: HHH000397: Using ASTQueryTranslatorFactory Info: Loading application [yaya] at [/yaya] Info: yaya was successfully deployed in 6,323 milliseconds.WARN: SQL Error: -1, SQLState: 42Z23
ERROR: Attempt to modify an identity column 'ID'.
Warning: StandardWrapperValve[DbTest]: Servlet.service() for servlet DbTest threw exception org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:196) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:96) at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.buildBatchStatement(AbstractBatchImpl.java:152) at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.getBatchStatement(AbstractBatchImpl.java:141) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3102) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3587) at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:103) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:453) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:345) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1218) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:421) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177) at com.ya.ya.zzzyaya.DbTest.processRequest(DbTest.java:97) at com.ya.ya.zzzyaya.DbTest.doGet(DbTest.java:116) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLSyntaxErrorException: Attempt to modify an identity column 'ID'.
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source) at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$1.doPrepare(StatementPreparerImpl.java:103) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) ... 45 more Caused by: org.apache.derby.client.am.SqlException: Attempt to modify an identity column 'ID'. at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source) at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown Source) at org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown Source) at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source) at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source) at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown Source) at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source) at org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown Source) at org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown Source) at org.apache.derby.client.am.PreparedStatement.prepare(Unknown Source) at org.apache.derby.client.am.Connection.prepareStatementX(Unknown Source) ... 48 more
我已经研究了几个小时,但我不知道如何继续。我必须在 hibernate 中更改什么才能使其足够智能而不会输入主键?
最佳答案
好的,我明白了,部分感谢 Rp- 的评论
private int id;
必须更改为
private Integer id;
并在Servicelog.hbm.xml中
<id name="id" type="int">
<column name="ID" />
<generator class="identity" />
</id>
至
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="assigned" />
</id>
关于java - Hibernate 不允许我添加具有自动生成身份 PK 的 Derby 数据库实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939024/
甲骨文: create table t7(c1 number primary key,c2 number); insert into t7 values (1,3); insert into t
谁能告诉我为什么点击模板链接生成的url是/.pk。我想了解 url 是如何工作的。这里是 Django 新手。 Traceback (most recent call last): File "
我有以下 MySQL 触发器。它因 tbl_users 的更新而被触发。如果当天已经存在记录,它将用一些信息更新 tbl_user_stats;如果当天没有记录,它将在 tbl_user_stats
已知:tX_1.name 永远不能为 NULL,长度可变,最多 45 个字符,并且必须始终是唯一的。 哪些因素会影响是否应使用代理 PK 加唯一列(架构 1)或 PK 自然键是否使用第一个表的唯一列作
我有一个包含复合 PK(code_id、user_id)的表,它已经有 100k 条记录。从复合 PK 移动到单个 PK 是否安全,如下例所示? ALTER TABLE orders DROP C
为什么这个模型没有创建 pk 并提示相关模型的 pk 的完整性? 创建 UserProfile 的新实例时,它不会创建主键。 我正在遵循一对一的说明 in this tutorial (这就是所有 @
注意:我是 JPA 开发的新手,正在快速学习试用,所以请原谅我可能遗漏的任何明显内容。 以下是相关的 JPA 实体。地址未列出,但它是一个非常简单的实体,具有一个名为 id 的 @Id。 ShipTo
我们的系统中有两个实体,如下所示: Invoice:[InvoiceID, OrgID] 是表示为 bean 的主键,并使用 @IdClass 注释与 Invoice 相关联 WorkflowStat
场景:我遇到了一些在事务中将 JPA 与 JDBC 混合的代码。 JDBC 正在对基本上是空白行的表执行 INSERT,将主键设置为 (SELECT MAX(PK) + 1) 并将 middleNam
我有一个包含 3 个表的数据库:类别、项目、关系。 categories 包含类别。商品存储在items中,relation是一个绑定(bind)表,它存储了产品id和类别id或类别。 对于给定的项目
问题 当我尝试导入 CSV 文件时,我收到 key “PRIMARY”的重复条目“x-x-xx-x-x-x” - PK 错误。 PK 本身是两个连接的 varchar。据我所知,连接永远不会重复。 我
我正在尝试使用连接从两个大表中进行选择: EXPLAIN SELECT SQL_NO_CACHE e.* FROM `table_A` e JOIN (SELECT id FROM
我有这个 post_list.html 文件:(忽略第二个 'blog:post_detail' url) {% for post in post_list %} {{ post.title }}
我需要使用 JPA 处理现有数据库表。这些表使用复合主键。外键属性与表的主键重叠。 简化示例,每个“订单”都有许多“OrderItems” Table Order
据我所知,每当我在 JPA/Hibernate 实体内的 Long 字段上使用 @Id 和 @GeneratedValue 时,我实际上是在使用代理键,我认为这是定义主键的一种非常好的方式,考虑到我在
所以我有这段代码: request = self.factory.get(reverse('portal-edit-automation', args=(self.rule.id,))) respon
当在MySQL中使用InnoDB存储引擎时,如果在创建表时不指定PRIMARY KEY,则使用隐藏唯一索引作为聚集索引。由于数据字典上的互斥锁,我了解到这些隐藏索引可能会导致争用。 我的问题是 - 如
我正在尝试删除 table1 中与 table2 中具有匹配 PK 的所有行。尽管我的 WHERE 子句使用了键,但我收到错误 1175。我熟悉切换安全模式,但这不应该成为问题,因为我的 WHERE
我正在尝试更新具有外键字段的 View 的记录,因此出现错误,因为我尝试更新没有外键字段的另一个模型并且效果很好。 还有其他类似的问题,但就我而言,我通过了 pk。 urls.py urlpatte
Beeferman 的 PK 和 WindowDIFF 的 Python NLTK 实现从两者的 python segeval 实现中得到完全不同的结果。 使用相同的参数。 hyp: 01001000
我是一名优秀的程序员,十分优秀!