当前位置: 首页 > 面试题库 >

@Id @GeneratedValue,但设置自己的ID值

夏祺然
2023-03-14
问题内容

我有一个带有生成ID的表,但是在某些情况下,我想自行设置它。我可以以某种方式强制Hibernate忽略@GeneratedValue吗?


问题答案:

可能是一个矫kill过正,但您是否考虑过编写自己的CustomIDGenerator,它的子类可能表示hibernate的AutoGenerator,并提供了一些方法,您可以在其中设置要生成的下一个类对象的ID,例如

class MyGenerator extends .... {

public void setIdForObject(Class clazz, Long id) {
    //once you use this API, the next time an object of 
    //type clazz is saved the id is used
}

public void setIdForObject(Class clazz, Long id, Matcher matcher) {
    //once you use this API, the next time an object of 
    //type clazz is saved and the matcher matches yes the id will be 
    //assigned. Your matcher can match properties like name, age etc
    //to say the matched object
}
}

这可能会变得复杂,但至少每个hibernatedoco都有可能



 类似资料:
  • 何时才能可靠地知道设置了新创建实体的字段,该字段带有注释? JPA规范对此并不是很具体。我见过类似的问题,但他们得到的答案却不一样,令人困惑。我知道一旦事务被提交,id就已经设置好了,但是如果事务还在运行,而我需要id怎么办呢? 我怎样才能可靠地得到它?

  • 我们正在进行一个项目,该项目使用JSPlumb进行工作流呈现,并维护一个单独的数据模型,其中包括节点(id、位置、文本等)和连接,使用JSPlumb.bind使其与事件保持同步 当我开始重新创建连接时,我使用源和目标参数调用jsPlumb.connect,但ID似乎是在幕后创建的,因此与从数据模型加载的内容不匹配。这将是好的,除了在我不想删除该连接的ID从模型。。。 有没有办法手动设置连接器的ID

  • 问题内容: 我想将用户持久保存到数据库中,并使用IDENTITY生成类型创建的User的ID(PK)的当前方案。例如 但我想在以下情况下进行操作:1)用户明确设置。2)如果未设置用户,则将自动分配它,并且它必须是唯一的。 请建议我一些可用的选项,以便我解决。谢谢。 问题答案: 您可以为此目的定义您的自定义ID生成器,如本SOAnswer中指出的那样 它的代码如下所示: 和

  • 问题内容: 我在gwt应用程序上有一个FlowPanel对象。 它给了我以下错误: 如何设置的ID ? 问题答案: 我正在使用GWT 2.4.0,此代码可以正常工作。 要么

  • 问题内容: 如何获取Java进程的ID? 我知道有几种与平台相关的黑客,但是我希望有一个更通用的解决方案。 问题答案: 看起来是最好的(最近的)解决方案。它很短,并且可能在广泛使用的所有实现中起作用。 在上,它返回一个类似(12345是进程ID)的值。但是请注意,根据docs,不能保证该值: 返回代表正在运行的Java虚拟机的名称。返回的名称字符串可以是任意字符串,并且Java虚拟机实现可以选择在