我有一个简单的JPA实体,它使用生成的“ID”作为主键: @Entity public class Player { private long id; protected Player() { // Do nothing; id defaults to 0L } @GeneratedValue @Id public long getId() { return id; } protected void setId(final long id) { this.id = id; } // Other code } 在这种types的对象的生命周期的某个时刻,JPA必须调用setId()来logging生成的ID值。 我的问题是,这是什么时候发生的,以及说明这一点的文档在哪里 。 我查看了JPA规范,找不到明确的声明。 JPA规范说(重点补充): 托pipe实体实例是具有持久性标识的实例,当前与持久性上下文相关联。 那是不是试图说这个对象必须被pipe理来使其@Id有意义? EntityManager.persist()的文档说(强调添加)它使“一个实例pipe理和持久化”,所以这意味着@Id是由该方法设置? 或者直到你打电话给EntityTransaction.commit() ? 设置@Id对于不同的JPA提供者可能会有所不同,也可能是针对不同的生成策略。 但是,对于已经设定的生命周期中的最早点,您可以做出哪些最安全的(便携式,符合规范的)假设?
有没有办法重新设置PostgreSQL表的主键从1开始在填充表上重新开始? 现在它正在产生1000000以上的数字。 我想这一切都重置,并开始1,保持所有我现有的数据完好无损。
什么时候应该使用主键或索引? 他们的区别是什么,哪一个是最好的?
我有一个数据库3列: id, name, somethingelse 此表没有索引集,我得到“没有索引定义!” 在phpmyadmin id是一个7位数的字母数字值,对每一行都是唯一的。 我想设置Drugid是主要关键/索引(我不知道有什么区别) 请详细解释,因为我是新手。 谢谢。
当我尝试在使用Mysql2作为数据库pipe理器的Rails中运行以下代码时: rake db:migrate 我得到以下错误: rake aborted! "Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL:" 为什么我得到这个错误,如果表中的主键默认不是“null”? 迁移代码,但是: class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string "first_name" t.timestamps end end end
有没有办法从MySQL数据库中获得主键字段的名称? 例如: 我有这样一张桌子: +—-+——+ | id | name | +—-+——+ | 1 | Foo1 | | 2 | Foo2 | | 3 | Foo3 | +—-+——+ 在字段ID是主键(它有自动增量,但我不能使用)。 我如何检索字段名称“身份证”在PHP?
SQL Server 2008: DECLARE @MyTable TABLE( PersonID INT NOT NULL, Person2ID INT NOT NULL, Description NVARCHAR(100), CONSTRAINT PK PRIMARY KEY CLUSTERED (PersonID, Person2ID) ); 得到: Msg 156, Level 15, State 1, Line 5 Incorrect syntax near the keyword 'CONSTRAINT'. 有什么办法在表值的variables中有复合主键?
我们有一个包含三个字段的组合主键(在MySQL 5.1中)。 在这个表上每秒钟有200个插入和200个select,并且表的大小约为100万行,并且正在增加。 我的问题是:“复合主键”是否会降低此表上插入和select的性能? 我应该使用简单的自动增加INT ID字段而不是复合主键吗? (我想这个答案和MySQL在多列上处理索引的方式非常相关)
我想确定使用TSQL的表的主键(存储过程或系统表是好的)。 SQL Server(2005或2008)中是否有这样的机制?
我有表“用户”(用户名,密码)和表“configuration文件”(profileId,gender,dateofbirth,…)。 目前我正在使用这种方法:每个configuration文件logging都有一个名为“userId”的字段作为链接到用户表的外键。 当用户注册时,他的个人档案logging是自动创build的。 我对我的朋友build议感到困惑:将“userId”字段作为外键和主键,并删除“profileId”字段。 哪种方法更好?