相关疑难解决方法(0)

如何为MySQL Datetime列设置默认值?

如何为MySQL Datetime列设置默认值?

在SQL Server中它是getdate().什么是MySQL的等价物?如果这是一个因素,我正在使用MySQL 5.x.

mysql datetime

851
推荐指数
19
解决办法
121万
查看次数

使用UTC中的当前时间作为PostgreSQL中的默认值

我有一个TIMESTAMP WITHOUT TIME ZONE类型的列,并希望默认为UTC当前时间.以UTC格式获取当前时间很简单:

postgres=# select now() at time zone 'utc';
          timezone          
----------------------------
 2013-05-17 12:52:51.337466
(1 row)
Run Code Online (Sandbox Code Playgroud)

与使用列的当前时间戳一样:

postgres=# create temporary table test(id int, ts timestamp without time zone default current_timestamp);
CREATE TABLE
postgres=# insert into test values (1) returning ts;
             ts             
----------------------------
 2013-05-17 14:54:33.072725
(1 row)
Run Code Online (Sandbox Code Playgroud)

但那使用当地时间.尝试将其强制为UTC会导致语法错误:

postgres=# create temporary table test(id int, ts timestamp without time zone default now() at time zone 'utc');
ERROR:  syntax error at or near "at"
LINE 1: ...int, ts timestamp without …
Run Code Online (Sandbox Code Playgroud)

postgresql timezone timestamp

151
推荐指数
5
解决办法
12万
查看次数

如何使用JPQL获取数据库时间?

使用本机SQL我使用如下语句获取数据库时间:

SELECT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

使用JPQL我得到相同的结果:

SELECT CURRENT_TIMESTAMP
FROM Customer c
WHERE c.id=1
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱最后两行?

谢谢,

java orm hibernate jpa jpql

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

如何将timestamp列映射到JPA类型?

我正在玩Play!1.2.4和PostgreSQL 9.1.我创建了一个带有created_at列的表,类型为:timestamp without time zone.它的默认值为now().

当我使用我的Entity类为此表获取数据时出现问题.这个createdAt领域总是回来null.这是字段定义:

@Column(name="created_at", insertable=false)
public java.sql.Date createdAt;
Run Code Online (Sandbox Code Playgroud)

所有其他字段都正确填充.我试图改变字段类型为Date,Calendar,Timestamp等等,并试图增加一个@Timestamp注释.但没有任何组合证明是成功的.

在此先感谢您的帮助!

作为参考,这是我用来创建表的DDL.

CREATE TABLE Users
(
  id serial     NOT NULL,
  username text NOT NULL,
  email text    NOT NULL,
  password_hash text NOT NULL DEFAULT 0,
  created_at timestamp without time zone DEFAULT now(),
  CONSTRAINT Users_pkey PRIMARY KEY (id),
  CONSTRAINT Users_username_key UNIQUE (username)
);
Run Code Online (Sandbox Code Playgroud)

更新: 我认为问题与使用JPA插入记录有关.数据库填充默认值now()for created_at,但是在获取该行时Hibernate不知道它是什么.

如果我查询已经存在的行,createdAt则会正确填充该字段!好的......这缩小了问题的范围.

postgresql jpa playframework

9
推荐指数
1
解决办法
3万
查看次数

使用 JPA 在 INSERT 上跳过一列

我有一个带有多个参数的 JPA/EclipseLink 模型,其值由 PostgreSQL 数据库设置为默认值。具体来说,我有:

  • 添加新行时自动递增的id列类型SERIAL
  • created_at类型的柱TIMESTAMP,默认为now()

我的模型看起来像这样:

import javax.persistence.*;

@Entity
@Table(name="entity")
@NamedQuery(name="Entity.findAll", query="SELECT e from Entity e")
public class Entity {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    @Column(name="created_at")
    private java.sql.Timestamp createdAt;

    // constructor, getters, and setters
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用persist()in插入一行时javax.persistence.EntityManager,插入失败,因为NULL正在为该created_at列设置一个值。NULL我不想插入,而是不想在该列中插入任何内容并允许 PostgreSQL 将其设置为now(). 本质上,我想使用@GeneratedValueon createdAt,但该注释仅适用于主键,不能用于多个属性。我可以使用另一个注释来实现这一点吗?

java postgresql jpa eclipselink

6
推荐指数
1
解决办法
6562
查看次数