我正在尝试在包级别创建@GenericGenerator注释,以便包中的所有实体都可以使用它。
1)我有一个包含注释的package-info.java类:
@org.hibernate.annotations.GenericGenerator(name = "ID_GENERATOR", strategy = "enhanced-sequence", parameters = {
@org.hibernate.annotations.Parameter(name = "sequence_name", value = "JPWH_SEQUENCE"),
@org.hibernate.annotations.Parameter(name = "initial_value", value = "1000") })
package com;2)在同一个包中,我有一个具有以下属性的实体:
@Id
@GeneratedValue(generator = "ID_GENERATOR")
private Long id;这会导致一个异常“未知的Id.generator: ID_GENERATOR”。如果我在entity类中包含@GenericGenerator注释,它就能正常工作。然而,我想把它移到包级别,这样我就可以在其他实体中重用它。
有没有什么想法会导致脱节呢?
谢谢!
发布于 2017-04-23 20:12:24
您可以将实体代码更改为:
@Id
@SequenceGenerator(name="my_id_generator", sequenceName="ID_GENERATOR")
@GeneratedValue(generator="my_id_generator")
private Long id;来源:link
发布于 2017-04-15 21:40:48
我认为你犯了一个设计错误。如果你想在你的模型类之间有一个共同的东西,使用继承。您可以创建一个AbstractEntity类来定义id生成器。你的模型的每个类都是从这个抽象继承而来的。这是一种常见的模式。您还可以将传统的通用属性created、createdBy、updated、updatedBy和为什么不是sysname。使用hibernate id生成器并不真正有意义。
再见
发布于 2018-03-19 23:47:17
我将package-info文件放在一个包中,然后用子包填充它,如下所示:
org.persistence
package-info
org.persistence.someclasses
PersistenceClass
org.persistennce.otherclasess
OtherPersistenceClass这在几个小时内没有其他动作。然后,我在cfg.file中添加、更改和删除了一些值,在添加<mapping package="org.persistence"/>行之前,这些操作都不再起作用
然后它又起作用了。我在这里找到了答案:
https://stackoverflow.com/questions/43424203
复制相似问题