gpt4 book ai didi

java - 表不是由 hibernate 的 hbm2ddl 创建的

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:32 26 4
gpt4 key购买 nike

在我的应用程序中,我有几个使用 JPA 注释进行注释的实体 POJO。 hbm2ddl 还配置为为这些实体生成表。当应用程序第一次启动时,所有表都成功生成,除了一个。这是实体源代码:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "REQUESTS")
public class InterpreterRequest implements java.io.Serializable {

private static final long serialVersionUID = -1017432073323298138L;

@Id
@GeneratedValue
private long id;
@Column(name = "quantity")
private int quantity;
@Column(name = "from")
private String from;
@Column(name = "to")
private String to;
@Column(name = "spec")
private String spec;
@ManyToOne(targetEntity = Event.class)
private Event event;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public int getQuantity() {
return quantity;
}

public void setQuantity(int quantity) {
this.quantity = quantity;
}

public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}

public String getTo() {
return to;
}

public void setTo(String to) {
this.to = to;
}

public String getSpec() {
return spec;
}

public void setSpec(String spec) {
this.spec = spec;
}

public Event getEvent() {
return event;
}

public void setEvent(Event event) {
this.event = event;
}

}

这是 hibernate session 工厂配置:

    <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.connection.pool_size">5</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<!-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.hibernate.cache.use_query_cache">true</prop> -->
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.ceonline.inter.shared.model.User</value>
...
<value>com.ceonline.inter.shared.model.InterpreterRequest</value>
</list>
</property>
</bean>

hbm2ddl 在生成表时省略 InterpreterRequest 类的原因是什么?

最佳答案

您没有说您使用的是哪个数据库,但问题很可能是您的列名之一或表名是保留字。 from 列绝对是所有 数据库风格中的保留字。

修复:

您需要对作为保留字的名称进行转义。这是mysql的解决方案,它使用反引号将关键字变成文字):

 @Column(name = "`from`")
private String from;

找出某些内容是否为保留字的简单测试是尝试手动创建表 - SQL 解析器会快速告诉您问题出在哪里。检查其他列名和表名

关于java - 表不是由 hibernate 的 hbm2ddl 创建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com