当前位置: 首页 > 知识库问答 >
问题:

Hibernate空间和PostGIS主键问题

姜淇
2023-03-14

我是PostGIS的新手,我正在使用带有Hibernate Spatial和Spring框架的PostGIS。问题是主键没有自动设置,在将数据插入数据库时,我收到以下错误:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.ConstraintViolationException: ERROR: null value in column "id" violates not-null constraint
Detail: Failing row contains (null,name , country).

我已经在MySQL上测试了代码,它工作正常。但是,当使用Hibernate Spatial和PostGIS时,它会给我提到的错误。模型如下:

@Entity
@Table(name="person")
public class Person {

    @Id
    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String name;
    private String country;
    ...
}

以下是插入数据的代码

 public void addPerson(Person p) {
    Session session = this.sessionFactory.getCurrentSession();
    session.persist(p);
}

以下是Maven中的依赖项:

postgis-jdbc: 1.5.2
postgresql: 8.4-702.jdbc3
hibernate-entitymanager: 4.0.0.Final
hibernate-core: 4.0.0.Final
hibernate-spatial: 4.0
commons-dbcp: 1.4
spring version: 4.0.3.RELEASE

和Hibernate配置:

<beans:bean id="hibernate4AnnotatedSessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <beans:property name="dataSource" ref="dataSource" />
    <beans:property name="annotatedClasses">
        <beans:list>
            <beans:value>it.polimi.thesis.model.Person</beans:value>
        </beans:list>
    </beans:property>
    <beans:property name="hibernateProperties">
        <beans:props>
            <beans:prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect
            </beans:prop>
            <beans:prop key="hibernate.show_sql">true</beans:prop>
            <beans:prop key="hibernate.ddl-auto">update</beans:prop>
        </beans:props>
    </beans:property>
</beans:bean>

我将不胜感激任何帮助。如果需要任何其他信息,请告诉我。

共有1个答案

符献
2023-03-14

好了,经过一番搜索,这个解决方案奏效了:

@Id
@Column(name="id", unique=true, nullable=false)
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
private int id;

我还添加了以下Hibernate配置:

<beans:prop key="hibernate.format_sql">true</beans:prop>
 类似资料:
  • 我在尝试通过hibernate spatial postgresql插件使用Grails 2.4.3和PostGIS数据库建立项目时遇到了很多麻烦。这是一个示例项目,除了默认插件外,没有安装其他插件。我首先启用了Postgres,并尝试将域保存到数据库中:一切正常。但一旦我启用hibernate spatial,它就不再工作了。 我和这个人有完全相同的问题。 我试着像他一样排除“hibernate

  • 我正在从GlassFish 4迁移到WildFly8应用程序服务器并收到以下错误: 我使用Hibernate空间和PostGIS。对于Glassfish服务器,我将postgis jar添加到 /lib/ext文件夹以修复该错误。 我按照本教程中的步骤:https://gist.github.com/bjornharrtell/3054462,但它对我不起作用,即我将这些模块添加到 /org/hi

  • 我对JPareSposition进行了本机查询,如: 生成的查询如下所示: 几何图形是表中包含空间数据的列。 但跟踪还表明查询存在解析错误: 但当我在数据库中执行查询时,我得到的结果是正确的。 为什么这个不匹配? 我最终可以通过以下方式解决这个问题:

  • 我正在尝试使用postgis设置一个带有hibernate空间的项目。按照hibernate空间4.0-M1的教程,我首先遇到了无法找到依赖postgis-jdbc-1.5.3.jar的问题。就像有人在这里建议的那样,我使用了1.5.2版和教程编译。 但是如果我尝试运行它,我会出错。我将Hibernate的调试级别设置为调试und时偶然发现了以下问题: 错误是德语,但意味着“几何”类型不存在。 如

  • 问题内容: 我正在使用Hibernate将对象保存在数据库中。我正在使用@GeneratedValue注释生成主键。 这是我的代码供应商类 我正在使用MS SQL Server 2012,其中有带有以下列的供应商表 未选中表示其NOTNULL = true,不允许使用空值。 这是我试图将数据保存到数据库中的代码。 运行此命令时,出现以下错误 请帮我解决一下这个。我是新来的hibernate并试图学

  • 我有一个复合主键,其中一个键为空。实体中必须存在哪些注释,以便我可以使用此类JPA获取数据: 我尝试使用IdClass Annotation和EmbeddedId Annotation,但出现异常: 例如,使用了数据,但在实际项目中使用了类似的数据,因此无法用值替换null。