![](/img/trans.png)
[英]Error creating bean with name 'entityManagerFactory' with Hibernate 5.2.13.Final
[英]MappedSuperclass - SequenceGenerator in Subclass (hibernate 5.2.13.Final)
我們嘗試將項目版本5.2.X中的休眠版本升級到5.2.13.Final,但是新的休眠正確地強制執行
生成器名稱的范圍對於持久性單元是全局的(跨所有生成器類型)。
我們的分類結構由一個BaseEntity和定義了@GenericGenerator的子類組成,所有生成器都使用相同的名稱。
@MappedSuperclass
public class BaseEntity {
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="idGenerator")
private Long id;
}
@Entity
@Table(name = "SAMPLE_TABLE")
@GenericGenerator(strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", name = "idGenerator", parameters = {
@Parameter(name = SequenceStyleGenerator.SEQUENCE_PARAM, value = "SAMPLE_SEQ") })
public class SampleEntity extends BaseEntity
是否可以在不將id字段放置在每個類中的情況下更正此生成器定義的選項?
這對我們來說適用於Hibernate 5.2.1和postgres:
import org.hibernate.annotations.GenericGenerator
import org.hibernate.annotations.Parameter
import org.hibernate.id.enhanced.SequenceStyleGenerator
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id
import javax.persistence.MappedSuperclass
@MappedSuperclass
abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@GenericGenerator(name = "sequenceGenerator", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = [
Parameter(name = SequenceStyleGenerator.CONFIG_PREFER_SEQUENCE_PER_ENTITY, value = "true"),
Parameter(name = SequenceStyleGenerator.OPT_PARAM, value = "pooled"),
Parameter(name = SequenceStyleGenerator.INITIAL_PARAM, value = "1"),
Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "50")
]
)
var id: Long? = null
}
代碼在kotlin中,但是您可以輕松地將其轉換為java。
如果您需要有關SequenceStyleGenerator的更多信息,請參閱docs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.