Java Hibernate-仅连接单个列而不是整个实体
我有一个类,只需要另一个映射实体中的一列。我宁愿没有完整的参考资料。有办法做到这一点吗?我已经用谷歌搜索过了,但我一定没有正确的术语 解释:Java Hibernate-仅连接单个列而不是整个实体,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个类,只需要另一个映射实体中的一列。我宁愿没有完整的参考资料。有办法做到这一点吗?我已经用谷歌搜索过了,但我一定没有正确的术语 解释: @Entity @Table(name = "foo") @Data public class Foo { @Id @Column(name = "itemid") private long id; @Column(name = "name") private String name; } 这项工作: @Enti
@Entity
@Table(name = "foo")
@Data
public class Foo {
@Id
@Column(name = "itemid")
private long id;
@Column(name = "name")
private String name;
}
这项工作:
@Entity
@Table(name = "bar")
@Data
public class Bar{
@Id
@Column(name = "itemid")
private long id;
@Column(name = "other_name")
private String otherName;
@OneToOne
@PrimaryKeyJoinColumn
private Foo foo;
}
但我想:
@Entity
@Table(name = "bar")
@Data
public class Bar{
@Id
@Column(name = "itemid")
private long id;
@Column(name = "other_name")
private String otherName;
@OneToOne
@JoinColumn(name = "itemid")
@Formula("SELECT name FROM FOO v where v.id = id")
// Something here...not sure what. Where name is the name from Foo
private String name;
}
你有几个选择 第一个是,正如您所提到的,使用
@Formula
——不使用其他注释,只使用@Formula
。这应该完全符合您的期望
或者,如果您发现自己经常需要这样做,您可以创建一个连接两列的视图,并使您的对象基于该视图而不是原始表。我认为您不应该这样做。实体类应该只描述数据的存储方式。您正在添加一些不应该添加的逻辑
还考虑当您不将外键存储到另一个表时会发生什么。如果实体被更改,则不会得到更新。
您是否尝试了最后一个片段,只是没有@OneToOne
和@JoinColumn
?只有@Formula
?因此,我删除了OneToOne和JoinColumn,只留下公式,得到“无法提取结果集;SQL[n/a]”。我需要其中的“where”部分,但我不确定这是否正确。