Hibernate ID增量oracle
我通过将其放入每个实体类中,让Hibernate通过1来递增每个表的ID. @Entity public class TestObject implements Serializable{ @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="idgen") @SequenceGenerator( name="idgen", sequenceName="testobject_seq", allocationSize=1, initialValue=1 ) 我有两个表通过Oracle SQL开发人员手动填充数据.我创建表格后. create 对于带有数据的2个表来说,我将初始值设置为所需的内容. 例如,表Testcha
0 2024-02-26
编程技术问答社区
带有注释的Hibernate字符串主键
我正在尝试创建一个用注释,其主要键是字符串.我将在插入时手动分配它们.因此,无需休眠来为其生成价值.我正在尝试这样做: @Id @GeneratedValue(generator = "assigned") @Column(name = "ROLE_NAME", nullable = false) private String roleName; 但它引发了例外: Caused by: org.hibernate.AnnotationException: Unknown Id.generator: assigned 我如何配置String用注释的主键? 解决方案 由于未自动生成roleName,您不应简单地用@GeneratedValue注释它: @Id @Column(name = "ROLE_NAME", nullable = false) private String roleName; 其他解决方案 @Id @Column(name = "
0 2024-02-26
编程技术问答社区
如何制作一个复合主键(java持久化注释)?
如何制作它,以使表User_roles将两个列(用户ID,raled)定义为复合主键.应该很容易,只是不记得/找到. in user实体: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "user_roles") public List getRoles() { return roles; } @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getUserID() { return userID; } in roles实体: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "user_roles") public List getUsers() { return users; } @Id @Gene
0 2024-02-26
编程技术问答社区
房间复合主键链接到外键
我正在使用房间数据库实施一个Android应用程序,并且对此DB中的关系有一个小问题. 我有两个表: @Entity(tableName = "foods", primaryKeys = {"id", "language_id"}, indices = {@Index(value = {"id", "language_id"}, unique = true)}, inheritSuperIndices = true) public class Food { @NonNull @ColumnInfo(name = "id") private String mId; @NonNull @ColumnInfo(name = "language_id") private String mLanguageId; } @Entity(tableName = "ingredients", primary
0 2024-02-17
编程技术问答社区
自动增量在android SQLite数据库中不工作
我有一个正在运行的数据库,但是主键不会自动增加.有谁知道是什么问题? 代码如下 // Database name and Version private static final String DATABASE_NAME = "kmky_database.db"; private static final int DATABASE_VERSION = 1; // Database Table private static final String TABLE_NAME = "logs"; private static final String COLUMN_ID = "_id"; private static final String COLUMN_PHONENUMBER = "phonenumber"; private static final String COLUMN_TYPE = "type"; private static final String COL
0 2024-02-10
编程技术问答社区
在安卓系统中,_id是否必须存在于创建的任何表格中?
我试图创建一个仅具有外键的表,而不是主键.我遇到了这个错误: java.lang.IllegalArgumentException: column '_id' does not exist 我读了一个教程,即主键必须是_id,而没有解释.那很好.但是,如果我不想要主钥匙怎么办!如果我只想要外键怎么办.我假设这是我的问题所在.下面的模式是我所拥有的.但是第三个是我认为这是来自的地方. database.execSQL("CREATE TABLE events (" + "_id INTEGER PRIMARY KEY, event_name TEXT" + ")"); database.execSQL("CREATE TABLE reminders(_id INTEGER PRIMARY KEY, event_name TEXT" + ")"); database.execSQL("CREATE T
2 2024-02-09
编程技术问答社区
安卓系统。在SQLite中使用UUID作为主键
我的应用需要与其他应用程序用户(在自己的设备上)同步.我还想支持离线编辑,这些编辑将在用户连接到Internet时与其他协作用户同步. 因此,用户会更改(虽然他离线)某些数据(用ohter用词,他将更新数据库条目)或在数据库中添加新记录.当用户A连接到Internet时,所有更改和新记录都将交付给其他协作用户.因此,用户B将获取更改/更新,并可以将/更新它们插入用户BS本地设备数据库. ,但是我需要确保数据库条目的ID在整个系统沿线都是唯一的.因此,我需要使用uuid之类的东西. 我的问题:在Android SQLite数据库表中使用UUID(String/varchar)作为主键是一个坏主意,而不是自动增加的整数? 我想使用字符串(一个UUID具有36个字符)作为主要键. 我猜索引uUID而不是整数需要更长的时间(比较字符串与比较整数).我还猜想,当我使用uuid时,每次插入新的数据库记录/条目时,数据库都需要重新索引主密钥列,因为它们主要键索引不再按顺序
4 2024-01-30
编程技术问答社区
在SQLite表中使用文本作为主键不好吗?
将文本作为SQLite数据库中的主要键是不好的吗?我听说这是出于绩效原因不利的,这是真的吗?在这种情况下,ROWID会用作实际的主要键吗? 解决方案 将文本作为SQLite数据库中的主要键是不好的吗?我听说 出于绩效原因是不好的,这是真的吗? 我从未听说有人在表中使用字符串作为主键.对我来说(老实说,对别人也希望)非常"丑陋"练习表现非常低. 如果您将字符串用作主要键,则需要考虑"几个"的内容: 将足够3个符号组合? 我应该使用5个符号? 在这里,每一行必须具有相同的格式(当然是可读性问题),并且也是唯一的.哦!这是下一个"小猪工作" ->您需要创建一些"唯一字符串生成器" ,它将生成unique 1 字符串识别器 2 . ,还有下一个问题很好: 更长的字符串=自动更难比较 桌子的尺寸从根本上升高,因为很明显 字符串的大小为数字 行数 - 如果您 表可以有1000多行 这是更复杂的主题肯定使用数字作为主键! 和什么是结论?
6 2024-01-30
编程技术问答社区
我们可以在Sqlite数据库中使用Guid作为主键吗?
是否可以在SQLITE数据库中使用GUID作为主要键?如果可能的话,可以使用哪些数据类型? 解决方案 sqlite本身不支持GUID作为内部类型. 除非,它确实如此! (有点).请记住,在sqlite中,任何字符串都可以用作类型名称,其中包括GUID或UUID(阅读有关 sqlite datatypes 根据这些规则,GUID类型具有亲和力NONE,与BLOB字段相同.考虑到这一点,您可以创建GUID类型的列,并使用以下规则访问它: 将其作为字符串如X'01020304050607080910111213141516'(x表示法代表16字节BLOB值). 要插入,请使用: INSERT INTO mytable (uuid) VALUES (X'01020304050607080910111213141516'); 将其读为16字节BLOB. quote(uuid)可用于使用X符号格式化输出: SELECT quote(uuid) FROM mytab
4 2024-01-28
编程技术问答社区
从AWS凭证提供商处获得安全令牌
有人可以解释我,我需要如何实现此 Blog ,hardcoded-aws-credentials-in-in-in-in-aws-iot-iot-iot-credentials-provider/" rel ="? 我在AWS文档中找不到它. 换句话说,我需要翻译一个命令: curl --cert eeb81a0eb6-certificate.pem.crt --key eeb81a0eb6-private.pem.key -H "x-amzn-iot-thingname: myThingName" --cacert AmazonRootCA1.pem https://.credentials.iot.us-west-2.amazonaws.com/role-aliases/MyAlias/credentials 到Java.我该怎么做?我需要AWS SDK(我更喜欢没有"自定义客户端提出HTTPS请求"的解决方案) 更新: 我试图使用自定义客
4 2024-01-25
编程技术问答社区
什么是哈希和范围主键?
我无法理解它如何工作? "无序的哈希属性上的无序哈希索引以及范围属性上的排序范围索引"是什么意思"? 解决方案 " 哈希和范围主键"表示DynamoDB中的单行具有由 hash 和组成的唯一主键范围键.例如,使用 x 的哈希键和 y 的范围键,您的主键实际上是 xy .您还可以具有相同哈希键的多个范围键,但是组合必须是唯一的,例如 xz 和 xa .让我们在每种表格中使用他们的示例: 哈希主键 - 主键是由一个属性制成的,一个哈希 属性.例如,productcatalog表可以将productid作为 它的主要关键. DynamoDB在此上构建一个无序的哈希索引 主密钥属性. 这意味着每个行都是从此值中键入的. DynamoDB中的每个行都将具有此属性所需的独特值.无序的哈希索引意味着所说的内容 - 数据未订购,并且没有保证数据存储的方式. 您将无法在无序的索引上进行查询,例如让我所有具有大于x 的行的行.您根据哈希键编写和获取项目.例如,从具有Producti
2 2024-01-24
编程技术问答社区
DynamoDB:何时使用何种PK类型?
我正在尝试阅读DynamoDB上的最佳实践.我看到DynamoDB有两种PK类型: 哈希键 哈希和范围键 根据我阅读的内容,后者似乎就像前者一样,但支持一组有限列的排序和索引. 所以我的问题是为什么只使用没有范围键的哈希键?仅在未搜索表时它才是可行的选择? 拥有一些何时使用什么关键类型的一般准则也很棒.我已经阅读了多个指南(包括亚马逊自己在DynamoDB上的文档),但它们似乎都没有直接解决这个问题. 谢谢 解决方案 选择哪种键的选择取决于您的用例和特定情况的数据要求.例如,如果您存储用户会话数据,使用 range键可能没有多大意义.一般而言,一旦知道会话ID,您只需通过密钥获取特定的项目查询即可.另一个示例可能是存储用户帐户或配置文件数据,每个用户都有自己的内容,您很可能会直接访问它(通过用户ID或其他内容). 但是,如果您存储订单项目,则 ranga键更有意义,因为您可能想检索按其 order order order . 根据数据模
8 2024-01-24
编程技术问答社区
使用sqlite改变表的下降列的语法错误
这是我桌子的模式: create table LPCG(ID integer primary key, PCG text, Desc text, test text); 我希望删除列"测试",因此使用命令: alter table LPCG drop column test; 这是我收到的错误消息: Error: near "drop": syntax error 有人可以帮我纠正我的错误吗? 另一个问题是:我知道ID是主要的密钥属性.我可以丢下那列吗?如果没有,是否有任何人使用过的解决方法? 事先感谢您的任何帮助. 解决方案 到版本3.35, sqlite不支持ALTER TABLE DROP COLUMN语句.您只能重命名表,或添加列. 如果要删除列,最好的选择是创建一个没有列的新表格,并丢弃旧表以重命名新表格. 截至目前,Alter表支持仍然有限,但包括在条件下掉落一列.
4 2024-01-24
编程技术问答社区
ALTER TABLE添加一个复合主键
我有一个名为provider的表.我有三个列,称为person,place,thing.可以有重复的人,重复的地方和重复的事物,但永远不可能有一个人的位置组合. 如何使用这三列在MySQL中为此表添加复合主键? 解决方案 ALTER TABLE provider ADD PRIMARY KEY(person,place,thing); 如果已经存在主键,则您要执行此操作 ALTER TABLE provider DROP PRIMARY KEY, ADD PRIMARY KEY(person, place, thing); 其他解决方案 @adrian Cornish的答案是正确的.但是,还有另一个警告以删除现有的主键.如果该主键被另一表用作外键,则在尝试删除它时会遇到错误.在MySQL的某些版本中,错误消息发生畸形(截至5.5.17,此错误消息仍然是 alter table parent drop column id; ERROR 1025 (HY
2 2024-01-24
编程技术问答社区
SQL Server为现有表添加自动增量主键
作为标题,我有一个现有的表,该表已填充150000记录.我添加了一个ID列(当前为null). 我假设我可以运行查询以用增量数字填充此列,然后将其设置为主键并打开自动增量.这是正确的方法吗?如果是这样,我该如何填写初始数字? 解决方案 否 - 您必须以相反的方式进行:从一开始就添加为INT IDENTITY - 当您执行此操作时,它将充满身份值: ALTER TABLE dbo.YourTable ADD ID INT IDENTITY ,然后您可以将其作为主要键: ALTER TABLE dbo.YourTable ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID) ,或者如果您想一步一步进行全部完成: ALTER TABLE dbo.YourTable ADD ID INT IDENTITY CONSTRAINT PK_YourTable PRIMARY KEY CLUS
2 2024-01-24
编程技术问答社区
生成唯一CD-KEY的算法,并进行验证
我正在尝试创建一个独特的CD键来放入我们的产品框中,就像用户用来注册产品的标准软件盒中的普通CD键一样. 但是,我们不是在销售软件,而是在出售DNA收集套件以用于犯罪和医疗目的.用户将通过邮件收到一个带有CD-KEY的Saliva Collection套件,他们将使用该CD键在我们的网站上创建一个帐户并获得结果.测试的结果将链接到CD键.这是我们必须将结果与患者联系起来的唯一方法.因此,重要的是不要失败:) 的要求之一是,CD-Keys的列表必须充分"分开",以便没有可能有人进入不正确的CD键并仍然批准其他工具包,从而混合两个套件. 这可能会花费我们数千美元的责任. 例如,它不能是数字的增量序列,例如 00001 00002 00003 ... 原因是,如果有人收到套件00002,但将其注册为000003,则他的结果将与其他人相匹配.因此,它必须像信用卡号一样...除非输入有效序列,否则您随机击中有效数字的机会是百万分之1 ... 此外,我们每年向各种
2 2024-01-23
编程技术问答社区
你喜欢你的主键吗?
在我的团队中的一个相当动画的讨论中,我被认为是大多数人喜欢的主要钥匙.我们有以下组 - int/bigint哪种自动插入足够好. 至少应该有3列构成主要钥匙. ID,GUID和人类可读的行标识符应以不同的方式对待. PK的最佳方法是什么?如果您可以证明自己的意见是合理的,那就太好了.上面有更好的方法吗? 编辑:任何人都有一个简单的示例/算法来生成良好缩放的行的人类可读标识符? 解决方案 如果您要在数据库之间与偶尔连接的应用程序进行任何同步,则应为主键使用GUID.调试这是一种痛苦,所以除了那种情况外,我倾向于坚持自动插入. 自动启动int应该是您的默认值, 使用它们应该是合理的. 其他解决方案 我看不到答案,该答案(我认为是)真正的基本要点 - 即,一个主键是保证您不会在表中获得两个条目的原因现实世界实体(如数据库中建模).该观察结果有助于确定主要钥匙的好处和错误的选择. 例如,在(美国)状态名称和代码的表中,名称或代码可能是主要键 -
4 2024-01-22
编程技术问答社区
什么是 "高/低 "算法?
什么是HI/LO算法? 我在 nhibernate 文档(这是生成独特的钥匙,,,是一种独特的键,一种方法)第5.1.4.2节),但我还没有找到关于其工作原理的很好的解释. 我知道nhibernate可以处理它,而且我不需要知道内部,但我只是好奇. 解决方案 基本思想是您有两个数字可以构成一个主键 - "高"数字和"低"数字.客户端可以基本上可以增加"高"序列,然后知道它可以安全地从上一个"高"值的整个范围内使用"低"值的范围生成键. 例如,假设您具有一个"高"序列,电流值为35,而"低"数字在0-1023范围内.然后,客户端可以将序列增加到36(其他客户端在使用35时能够生成钥匙),并且知道密钥35/0、35/1、35/2、35/3 ... 35/1023是所有可用. 能够在客户端设置主键,而不是在没有主键的情况下插入值,然后将它们获取回到客户端,这是非常有用的(尤其是与ORMS).除其他任何事情之外,这意味着您可以轻松地建立父母/子关系,并在进行任何
4 2024-01-22
编程技术问答社区
是否可以在完整的mysql表中添加一个自动递增的主索引列,迟到了?
假设该表有近5000 000行 CREATE TABLE `author2book` ( `author_id` int(11) NOT NULL, `book_id` int(11) NOT NULL, KEY `author_id_INDEX` (`author_id`), KEY `paper_id_INDEX` (`book_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 是否可以将主索引列添加为autoincrement作为第一名?我期望这样的事情: CREATE TABLE `author2book` ( `id` int(11) NOT NULL AUTO_INCREMENT,
4 2024-01-19
编程技术问答社区