2015-10-13 150 views
2

直到今天,我還沒有工作過EclipseLink,我似乎無法找到@NaturalId。那麼EclipseLink中的Hibernate的@NaturalId的等價物是什麼?EclipseLink相當於Hibernate @NaturalID

import javax.persistence.CascadeType; 
import javax.persistence.Embedded; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 
import javax.persistence.OneToMany; 

import org.hibernate.annotations.NaturalId; 

import lombok.Data; 

@Entity 
@Data 
public class Task { 

enum Status{DONE,IN_PROGRESS,OPEN,REOPENED} 

@Id 
private long id; 
@NaturalId 
private String taskKey; 
private Status status; 
private int initEstimation; 
@Embedded 
Progress progress; 
} 
+0

您能提供實體的片段,以便我們確定使用要求嗎? – alliancecoder

回答

0

望着https://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/annotations/NaturalId.html 的@NaturalId註釋似乎是對DDL生成過程中使用的表指定約束的方式。

如果是這樣,JPA方式來完成相同的是定義自己的註釋用於表定義內直接使用@UniqueConstraint(COLUMNNAMES = {「TASKKEY」})的約束,如下所示: JPA - defining multi-column unique constraints

JPA不允許標記映射不可變,儘管您可以將映射內的字段標記爲insertable = false,updatable = false。 EclipseLink還具有此處描述的@Mutable註釋: https://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/a_mutable.htm