cdx*_*dxf 4 spring spring-data spring-data-jpa kotlin
这是我的Tag和Post Entity类:
@Entity
class Tag(
@get:NotBlank
@Column(unique = true)
val name: String = "",
val description: String = ""
) {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
val id: Int? = null
@ManyToMany(mappedBy = "tags")
val posts: MutableSet<Post> = mutableSetOf()
@CreationTimestamp
lateinit var createDate: Date
@UpdateTimestamp
lateinit var updateDate: Date
fun addPost(post: Post) {
this.posts.add(post)
post.tags.add(this)
}
}
@Entity
class Post(
@get:NotBlank
var name: String = "",
val content: String = ""
) {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
val id: Int? = null
@ManyToMany
@Cascade(CascadeType.ALL)
val tags: MutableSet<Tag> = mutableSetOf()
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
lateinit var createDate: Date
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
lateinit var updateDate: Date
fun addTag(tag: Tag) {
this.tags.add(tag)
tag.posts.add(this)
}
}
Run Code Online (Sandbox Code Playgroud)
查询:
val post1 = Post( "Post 1", "Post 1 content");
val post2 = Post( "Post 2", "Post 2 content");
var tag = Tag( "news", "Tag description")
post1.addTag(tag)
post2.addTag(tag)
em.persist(post1)
em.persist(post2)
em.remove(post1)
em.flush()
Run Code Online (Sandbox Code Playgroud)
但是,createDate和updateDate返回null(标记和发布):

我将此代码转换为Java,它工作正常
Kotlin版本:1.2-M2
springBootVersion:'2.0.0.M7'
Kis*_*kae 11
问题可能存在于这些注释不限于它们应该注释的内容.这意味着kotlin并不确切知道将它们放在最终字节码中的位置.
要获得与java生成的字节码相同的字节码,您需要指定相关注释的注释目标:
@field:CreationTimestamp
lateinit var createDate: Date
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1851 次 |
| 最近记录: |