Zdravím,

už se to tu jednou řešilo:
http://java.cz/konference/2005-December/007592.html

Chtěl bych při INSERTu přes Hibernate vložit do NOT NULL sloupce hodnotu 
vrácenou z NOW().

Chtěl bych řešení v rámci Hibernate - nechci ukládat lokálně vytvořený Date 
objekt. Nechci ani škrtnout NOT NULL a dát TRIGGER, který nastaví sloupec na 
NOW().

V Hibernate jsem našel "custom CRUD commands", 
http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/hibernate/Annotations_Reference_Guide/Hibernate_Annotation_Extensions-Custom_SQL_for_CRUD_operations.html


Ale to má velkou nevýhodu - při změně schématu budu muset vyhledat a změnit 
daný příkaz.

Já bych si představoval takové řešení:

@Entity
class User {

  @Id private Long id;

  private String jmeno;

  @Temporal
  @SQLInsert( sql="NOW()" )
  @org.hibernate.annotations.Generated(GenerationTime.INSERT)
  @Column( insertable=false, updatable=false )
  private Date zalozen;

}

Takto by hibernate pro INSERT generoval SQL "INSERT INTO users (..., zalozen) 
VALUES (..., NOW() )".
Navíc by se obecně dala použít vkládaná hodnota, např. @SQLInsert( 
sql="SQRT(?)" )

Existuje něco takového? Já zatím nic nenašel.

Díky za jakékoliv tipy,
Ondra

Odpovedet emailem