사용자 도구

사이트 도구


java:hibernate:valuegenerationtype

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
마지막 판 양쪽 다음 판
java:hibernate:valuegenerationtype [2021/10/07 21:57]
kwon37xi 만듦
java:hibernate:valuegenerationtype [2021/10/07 22:02]
kwon37xi
줄 4: 줄 4:
   * [[https://docs.jboss.org/hibernate/orm/6.0/javadocs/org/hibernate/tuple/AnnotationValueGeneration.html|AnnotationValueGeneration]] 를 구현하여 실제로 값을 생성해주고, 이렇게 생성된 값이 필드의 값으로 자동으로 들어간다.   * [[https://docs.jboss.org/hibernate/orm/6.0/javadocs/org/hibernate/tuple/AnnotationValueGeneration.html|AnnotationValueGeneration]] 를 구현하여 실제로 값을 생성해주고, 이렇게 생성된 값이 필드의 값으로 자동으로 들어간다.
   * 이를 기반으로 하여 [[https://docs.jboss.org/hibernate/orm/6.0/javadocs/org/hibernate/tuple/CreationTimestampGeneration.html|CreationTimestampGeneration]] [[https://docs.jboss.org/hibernate/orm/6.0/javadocs/org/hibernate/tuple/UpdateTimestampGeneration.html|UpdateTimestampGeneration]] 등이 만들어졌다.   * 이를 기반으로 하여 [[https://docs.jboss.org/hibernate/orm/6.0/javadocs/org/hibernate/tuple/CreationTimestampGeneration.html|CreationTimestampGeneration]] [[https://docs.jboss.org/hibernate/orm/6.0/javadocs/org/hibernate/tuple/UpdateTimestampGeneration.html|UpdateTimestampGeneration]] 등이 만들어졌다.
 +  * see [[java:hibernate:generated|Hibernate @Generated]]
 +
 +===== Example =====
 +<code java>
 +@Entity(name = "Event")
 +public static class Event {
 +
 + @Id
 + @GeneratedValue
 + private Long id;
 +
 + @Column(name = "`timestamp`")
 + @FunctionCreationTimestamp
 + private Date timestamp;
 +
 + //Constructors, getters, and setters are omitted for brevity
 +}
 +
 +@ValueGenerationType(generatedBy = FunctionCreationValueGeneration.class)
 +@Retention(RetentionPolicy.RUNTIME)
 +public @interface FunctionCreationTimestamp {}
 +
 +public static class FunctionCreationValueGeneration
 + implements AnnotationValueGeneration<FunctionCreationTimestamp> {
 +
 + @Override
 + public void initialize(FunctionCreationTimestamp annotation, Class<?> propertyType) {
 + }
 +
 + /**
 + * Generate value on INSERT
 + * @return when to generate the value
 + */
 + public GenerationTiming getGenerationTiming() {
 + return GenerationTiming.INSERT;
 + }
 +
 + /**
 + * Returns null because the value is generated by the database.
 + * @return null
 + */
 + public ValueGenerator<?> getValueGenerator() {
 + return null;
 + }
 +
 + /**
 + * Returns true because the value is generated by the database.
 + * @return true
 + */
 + public boolean referenceColumnInSql() {
 + return true;
 + }
 +
 + /**
 + * Returns the database-generated value
 + * @return database-generated value
 + */
 + public String getDatabaseGeneratedReferencedColumnValue() {
 + return "current_timestamp";
 + }
 +}
 +</code>
  
java/hibernate/valuegenerationtype.txt · 마지막으로 수정됨: 2021/10/07 22:04 저자 kwon37xi