And*_*sen 14 java sql entity jpa spring-boot
如果我想要一个严格的列来组成一个ID.
SQL示例:
CONSTRAINT [PK_NAME] PRIMARY KEY ([Column1],[Column2],[Column3])
Run Code Online (Sandbox Code Playgroud)
我怎么能用Jpa Entity类做到这一点?通过columndefinition?
只需将id字段设置为:
value = Column1 + Column2 + Column3 // aint working.
Run Code Online (Sandbox Code Playgroud)
Rau*_*uth 33
您需要为复合键创建一个类:
public class CompositeKey implements Serializable {
private int column1;
private int column2;
private int column3;
}
Run Code Online (Sandbox Code Playgroud)
然后在你的实体类中使用@IdClass注释:
@Entity
@IdClass(CompositeKey.class)
public class EntityExample {
@Id
private int column1;
@Id
private int column2;
@Id
private int column3;
...
...
}
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效.希望它有所帮助,欢呼!
是的,还有另一个解决方案,@ jklee提到的解决方案,两者都有效,这是一个偏好问题.
jkl*_*lee 12
使用@Embeddable和@EmbeddedId.
例:
@Entity
public class Project {
@EmbeddedId ProjectId id;
:
}
@Embeddable
Class ProjectId {
int departmentId;
long projectId;
}
Run Code Online (Sandbox Code Playgroud)
更多信息,请访问http://www.objectdb.com/java/jpa/entity/id#Embedded_Primary_Key_
如果类中的所有字段都是主键的一部分,则解决方案将非常简单(扩展@ raul-cuth提供的解决方案):
@Entity
@IdClass(EntityExample.class)
public class EntityExample implements Serializable {
@Id
private int column1;
@Id
private int column2;
@Id
private int column3;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28952 次 |
| 最近记录: |