相关疑难解决方法(0)

适用于postgres serial/bigserial列的正确Hibernate id生成器?

我的PostgreSQL表具有类型的id bigserial,这意味着它们是在插入行时生成的(因此,INSERT语句中不提供id列的值).我很难<generator class="...">在XML映射文件中找到属性的正确值.

下面的代码是我发现的最接近Postgres的代码,但是SELECT nextval(...)在插入之前它仍然在序列上执行(并且在插入时明确包含id字段的值).我只是希望Hibernate根本不包含id字段值,允许Postgres完成自己生成值的工作.

    <id name="id" column="id" type="java.lang.Long">
        <generator class="sequence">
            <param name="sequence">my_sequence_name</param>
        </generator>
    </id>
Run Code Online (Sandbox Code Playgroud)

java mapping postgresql hibernate hibernate-mapping

18
推荐指数
1
解决办法
2万
查看次数

如何在JPA和Hibernate中将数据库生成的列值定义为只读字段?

使用MariaDB 10.2,可以为Datetime定义默认值,例如created和lastModified.

我应该如何以只读字段的形式访问此列?因为这些值应仅在数据库的控制之下,不应从代码中修改,但我希望在代码中对此属性进行读访问.

java hibernate jpa readonly mariadb

9
推荐指数
2
解决办法
1987
查看次数

使用postgresql在串行列上的Spring Data JPA"列xxx中的空值违反非空约束"

我的实体有一个mapOrder字段,我希望自动增加,如下所示:

@Entity
public class Map{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(columnDefinition = "serial")
    private Long mapOrder;

    //.......
}
Run Code Online (Sandbox Code Playgroud)

生成的sql似乎很好:

CREATE TABLE map
(
  id bigserial NOT NULL,
  map_order serial NOT NULL,
  ...
)
Run Code Online (Sandbox Code Playgroud)

但是当我使用Spring Data JPA的存储库保存它时,如下所示:

Map m=new Map();
repo.save(m);
Run Code Online (Sandbox Code Playgroud)

会给我例外的:

Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "map_order" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java postgresql hibernate jpa spring-data-jpa

8
推荐指数
2
解决办法
7874
查看次数