休眠 table 未映射
Hibernate table not mapped
我有实体
@Entity
@Table(
name = SomeEntity.TABLE_NAME,
uniqueConstraints = {@UniqueConstraint(columnNames = {"first", "second"})}
)
public class SomeEntity extends SomeSuperEntity {
public static final String TABLE_NAME = "SomeEntity";
public SomeEntity() {
}
public SomeEntity(String first, String second, Integer third) {
super(first, second, third);
}
}
这个实体的超级class
@MappedSuperclass
public abstract class SomeSuperEntity extends SomeSuperAbstractEntity {
@Column(nullable = false)
private String first;
@Column(nullable = false)
private String second;
protected SomeSuperEntity () {
}
protected SomeSuperEntity (String first, String second, Integer third) {
super(third);
this.first= first;
this.second= second;
}
}
二超class
@MappedSuperclass
public abstract class SomeSuperAbstractEntity {
@Column(nullable = false)
private Integer third;
protected SomeSuperAbstractEntity () {
}
protected SomeSuperAbstractEntity (Integer third) {
this.third= third;
}
}
我有这 2 个方法,第一个 - 用于查找实体
public <T extends SomeSuperEntity > Optional<T> findByFirstAndSecond(String first, String second, Class<T> tClass) {
String hql = String.format("FROM %s E WHERE E.first = :first AND E.second = :second", getTable(tClass));
return jpaApi.em().createQuery(hql, tClass)
.setParameter("first", first)
.setParameter("second", second)
.getResultList().stream().findAny();
}
其次将实体名称获取到 hql
private String getTable(Class<? extends SomeSuperEntity > tClass) {
if (tClass.equals(SomeEntity .class)) {
return SomeEntity.TABLE_NAME;
}
return null;
}
当我尝试调用 findByFirstAndSecond("1", "2", SomeEntity.class) 时,出现错误
[错误] c.i.SomeMethod- 错误:org.hibernate.hql.internal.ast.QuerySyntaxException:未映射 SomeEntity [FROM SomeEntity E WHERE E.first = :first AND E.second = :second]
您是否在应用程序上下文中定义了要扫描的包?
<property name="packagesToScan">
<list>
<value>com.package_to_someentity</value>
</list>
</property>
或者,在你里面定义它hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<mapping class="com.package_to_someentity.SomeEntity" />
</session-factory>
</hibernate-configuration>
我有实体
@Entity
@Table(
name = SomeEntity.TABLE_NAME,
uniqueConstraints = {@UniqueConstraint(columnNames = {"first", "second"})}
)
public class SomeEntity extends SomeSuperEntity {
public static final String TABLE_NAME = "SomeEntity";
public SomeEntity() {
}
public SomeEntity(String first, String second, Integer third) {
super(first, second, third);
}
}
这个实体的超级class
@MappedSuperclass
public abstract class SomeSuperEntity extends SomeSuperAbstractEntity {
@Column(nullable = false)
private String first;
@Column(nullable = false)
private String second;
protected SomeSuperEntity () {
}
protected SomeSuperEntity (String first, String second, Integer third) {
super(third);
this.first= first;
this.second= second;
}
}
二超class
@MappedSuperclass
public abstract class SomeSuperAbstractEntity {
@Column(nullable = false)
private Integer third;
protected SomeSuperAbstractEntity () {
}
protected SomeSuperAbstractEntity (Integer third) {
this.third= third;
}
}
我有这 2 个方法,第一个 - 用于查找实体
public <T extends SomeSuperEntity > Optional<T> findByFirstAndSecond(String first, String second, Class<T> tClass) {
String hql = String.format("FROM %s E WHERE E.first = :first AND E.second = :second", getTable(tClass));
return jpaApi.em().createQuery(hql, tClass)
.setParameter("first", first)
.setParameter("second", second)
.getResultList().stream().findAny();
}
其次将实体名称获取到 hql
private String getTable(Class<? extends SomeSuperEntity > tClass) {
if (tClass.equals(SomeEntity .class)) {
return SomeEntity.TABLE_NAME;
}
return null;
}
当我尝试调用 findByFirstAndSecond("1", "2", SomeEntity.class) 时,出现错误
[错误] c.i.SomeMethod- 错误:org.hibernate.hql.internal.ast.QuerySyntaxException:未映射 SomeEntity [FROM SomeEntity E WHERE E.first = :first AND E.second = :second]
您是否在应用程序上下文中定义了要扫描的包?
<property name="packagesToScan">
<list>
<value>com.package_to_someentity</value>
</list>
</property>
或者,在你里面定义它hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<mapping class="com.package_to_someentity.SomeEntity" />
</session-factory>
</hibernate-configuration>