java - 带有 package-info.java 的 GenericGenerator
问题描述
Tasit
我有一个如下所示的实体。
package tr.com.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import tr.com.MyGenerator;
@Entity
public class Tasit {
@Id
@GeneratedValue(generator = "ID_GENERATOR")
private Long id;
@Column(name = "TASIT_ADI")
private String tasitAdi;
public String getTasitAdi() {
return tasitAdi;
}
public void setTasitAdi(String tasitAdi) {
this.tasitAdi = tasitAdi;
}
public Tasit(Long tasitId, String tasitAdi) {
super();
this.id = tasitId;
this.tasitAdi = tasitAdi;
}
public Tasit(String tasitAdi) {
super();
this.tasitAdi = tasitAdi;
}
public Long getId() {
return id;
}
public Tasit() {
super();
}
}
正如您在Tasit
实体中看到的那样@GeneratedValue(generator = "ID_GENERATOR")
。
l 添加tr.com.entity
包package-info.java
类。我的目标是写一个Generator
并用于tr.com.entity
包中的所有实体
我的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 tr.com.entity;
通过这样做,我尝试在TASIT
表中插入任何数据。但是,当我运行适当的运行器代码以将数据插入到TASIT
异常以下的表中时。
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.hibernate.AnnotationException: Unknown Id.generator: ID_GENERATOR
at org.hibernate.cfg.BinderHelper.makeIdGenerator(BinderHelper.java:639)
at org.hibernate.cfg.AnnotationBinder.processId(AnnotationBinder.java:2287)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2193)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:895)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:728)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3625)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3579)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1381)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1786)
at tr.com.hibernate.test.TasitTest.<clinit>(TasitTest.java:47)
任何帮助将不胜感激。
解决方案
休眠配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.id.new_generator_mappings" >true</property>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@HP-BILGISAYAR:1521:ORCL</property>
<property name="connection.username">hr</property>
<property name="connection.password">hr</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.Oracle8iDialect</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="tr.com.entity.Tasit"/>
</session-factory>
</hibernate-configuration>
推荐阅读
- c++ - 我们可以在不知道其真实类型的情况下将基类指针转换为派生类指针吗?
- asp.net - 将浏览器 PDF 保存到磁盘
- apache-spark - Elasticsearch如何利用集群?
- python - 单击 Selenium Python 按钮时出现问题
- php - Kotlin 是否允许像 php 中的 & 那样通过引用“可选地”传递?
- flutter - 颤振抽屉底部图像
- android - 我们如何知道使用哪个接口?
- .net - Azure.Management.Consumption.Models
- php - Laravel 无法将图像数据写入路径(http://localhost/recoveries/images/employees/T2150.PNG)
- arduino - 与计算机错误的 Arduino 通信