这个问题与Hibernate Annotation Placement Question有些相关.
但我想知道哪个更好?通过属性访问或通过字段访问?各有哪些优缺点?
我目前正在学习Hibernate和Java Persistence API.
我有一个@Entity类,需要将注释应用于各个字段.我已经在下面的代码中包含了他们可以去的所有三个地方.
我应该将它们应用于场地本身,吸气剂还是定位器?这三个选项之间的语义差异(如果有的话)是什么.
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name = "song")
public class Song {
// Annotations should only be applied to one of the below
@Id
@Column(name="id", unique=true, nullable=false)
private int id;
@Id
@Column(name="id", unique=true, nullable=false)
public int getId() {
return id;
}
@Id
@Column(name="id", unique=true, nullable=false)
public void setId(int id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用hibernate 4+.
我有两个样本表.
表A.
public class A {
@Id
private int id;
@OneToMany(fetch=LAZY)
private List<B> list;
// skip getter&setter
}
Run Code Online (Sandbox Code Playgroud)
表B.
public class B {
@Id
private int id;
@ManyToOne(fetch=LAZY)
@JoinColumn(name="b_id")
private A a;
// skip getter&setter
}
Run Code Online (Sandbox Code Playgroud)
表A(1) - (n)表B关系
我可以在对象B中获取A的id而不使用join吗?
比如int aid = b.getA().getId(); // b是B的实例;
虽然我在声明类B时可以使用int值而不是A.但是另一个服务层使用A和join.
我可以获得id(fk)值吗?
请帮忙.
对于@ManyToOneJPA 实体中的关系,我只对实际 id 引用感兴趣,而不是获取与该关系关联的整个模型。
以这些 Kotlin JPA 实体为例:
@Entity
class Continent(
@Id
var id: String,
var code: String,
var name: String
) : Comparable<Continent> {
companion object {
private val COMPARATOR = compareBy<Continent> { it.id }
}
override fun compareTo(other: Continent): Int {
return COMPARATOR.compare(this, other)
}
}
@Entity
class Country(
@Id
var id: String,
var alpha2Code: String,
var alpha3Code: String,
var name: String,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "continent_id")
var continent: Continent
) : Comparable<Country> {
companion …Run Code Online (Sandbox Code Playgroud) 例如,有一个实体“用户”,其@ManyToOne(fetch=Lazy)字段“团队”。我已经使用过entityManager.find(User.class, userId)获取用户。此时,如果我调用user.getTeam()查询将发送到数据库以获取团队对象。有没有办法无需额外查询即可获取团队 ID?