【发布时间】:2013-11-27 10:22:51
【问题描述】:
我想写一个像SELECT * FROM Release_date_type a LEFT JOIN cache_media b on a.id=b.id 这样的查询。我是 Spring Data JPA 的新手。我不知道如何为 Join 查询编写实体。这是一个尝试:
@Entity
@Table(name = "Release_date_type")
public class ReleaseDateType {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private Integer release_date_type_id;
// ...
@Column(nullable = true)
private Integer media_Id;
// with getters and setters...
}
另一个实体是:
@Entity
@Table(name = "Cache_Media")
public class CacheMedia {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private Integer id;
// ...
private Date loadDate; //with the getter and setter ..
}
我想写一个crudRepository这样的接口
public interface ReleaseDateTypeRepository extends CrudRepository<ReleaseDateType, Long>{
@Query("SELECT * FROM Release_date_type a LEFT JOIN cache_media b on a.id=b.id")
public List<ReleaseDateType> FindAllWithDescriptionQuery();
}
【问题讨论】:
-
您需要实体之间的关联。不要存储其他实体的 ID。存储对其他实体的引用,并使用 OneToOne、ManyToOne、OneToMany 和 ManyToMany 关联。您的 JPA 教程(或 Hibernate 文档)应该涵盖这些内容。
-
您好 Nizet,感谢您的快速回复,您是否有任何教程可以为我提供有关与实体关联的更多信息。
-
在docs.jboss.org/hibernate/orm/4.2/manual/en-US/html_single中搜索OneToOne、OneToMany、ManyToOne和ManyToMany
-
实体之间如何添加关联?我不太了解,但我添加为 `@OneToMany @JoinColumn( name="Description") Set
cacheMedia;'在 ReleaseDateType 实体中。问题仍然存在。
标签: spring hibernate jpa spring-data-jpa