Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL DATETIME presisi (joda-time, Hibernate, org.jadira.usertype, hbm2ddl)

Saya telah menemukan satu solusi lagi yang memungkinkan untuk tidak membuat hardcode cuplikan definisi kolom MySQL di @Column Anda anotasi. Tentukan dialek hibernasi Anda sendiri dengan mengganti org.hibernate.dialect.MySQLDialect :

package org.yourproject;

import java.sql.Types;
import org.hibernate.dialect.MySQL5Dialect;

public class MySQL564PlusDialect extends MySQL5Dialect {
   public MySQL564PlusDialect() {
      super();
      registerColumnType( Types.TIMESTAMP, 6, "datetime($l)" );
   }
}

dan tentukan sebagai properti hibernasi hibernate.dialect=org.yourproject.MySQL564PlusDialect (dialek yang ingin Anda perpanjang dapat bervariasi, misalnya org.hibernate.dialect.MySQL5InnoDBDialect sebagai gantinya).

Sekarang Anda dapat menyesuaikan presisi DATETIME dari dalam @Column anotasi dengan menggunakan length atribut:

@Basic(optional=false)
@Column(name="moment", length=3)
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
public DateTime getMoment() {
 ...

yang akan menghasilkan DATETIME(3) definisi kolom yang berarti presisi milidetik. Jika Anda membutuhkan DATETIME simple sederhana (tidak ada pecahan detik), jangan tentukan panjangnya. Anda dapat menggunakan nilai length hingga 6 yang berarti presisi mikrodetik.

Jika Anda menggunakan dialek yang berbeda dari dialek di atas (misalnya org.hibernate.dialect.MySQLDialect standar atau mungkin database lain), yang tidak akan merusak kode Anda:length atribut pada @Column akan diabaikan.

P.S. Akan lebih masuk akal untuk mengeksploitasi precision atribut @Column bukannya length , tetapi penggantian sederhana "datetime($l)" pola dengan "datetime($p)" satu dalam implementasi dialek saya sendiri tidak bekerja begitu saja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagian 1:jQuery -> MySQL -> jQuery -> HTML

  2. mysql - memilih nilai dari tabel yang diberikan nomor kolom

  3. PHP, MySQL - dapatkah Anda membedakan antara baris yang cocok dan baris yang terpengaruh?

  4. Operator '<' dicadangkan Kesalahan PowerShell

  5. PHP Openssl mendekripsi Enkripsi AES Mysql