[英]JPA Query for ManyToOne with multiple entities in one entity?
我有某種場景。 假設我正在制作一個關於游戲的數據庫。 首先,我有三個實體: Company
、 Platform
和Game
。
Company
是這樣的:
@Data @Entity @Table(name = "company") public class Company implements Serializable { @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "MA_COMPANY_ID_S") @SequenceGenerator(name = "MA_COMPANY_ID_S", allocationSize = 1, sequenceName = "MA_COMPANY_ID_S") @Column(name = "ID") private Long id; @Column(name = "COMPANY_NAME") private String companyName; }
Platform
是這樣的
@Data @Entity @Table(name = "platform") public class Platform { @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "MA_PLATFORM_ID_S") @SequenceGenerator(name = "MA_PLATFORM_ID_S", allocationSize = 1, sequenceName = "MA_PLATFORM_ID_S") @Column(name = "ID") private Long id; @Column(name = "PLATFORM_NAME") private String platformName; }
最后, Game
是這樣的
@Data @Entity @Table(name = "game") public class Game { @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "MA_GAME_ID_S") @SequenceGenerator(name = "MA_GAME_ID_S", allocationSize = 1, sequenceName = "MA_GAME_ID_S") @Column(name = "ID") private Long id; @Column(name = "GAME_NAME") private String gameName; @Column(name="TEST") private String testName; @ManyToOne @JoinColumn(name="COMPANY_ID", foreignKey=@ForeignKey(name="FK_COMPANY_ID")) private Company company; @ManyToOne @JoinColumn(name="PLATFORM_ID", foreignKey=@ForeignKey(name="FK_PLATFORM_ID")) private Platform platform; }
如你所見,一個游戲必須有兩個外鍵鏈接到一個公司和一個平台,例如,一個游戲由一個公司制作,然后放在一個平台上(稍后拋開多平台的概念)
我使用存儲庫文件將它與我的數據庫連接起來。 我將僅列出GameRepository
示例,因為這就是問題所在
@Repository public interface GameRepository extends JpaRepository<Game, Long> { @Query("SELECT id, gameName, company, platform FROM Game g WHERE g.id =:id") public Game findGameById(@Param("id") String id); }
如果我運行我的程序,則會收到此錯誤:
org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode \-[IDENT] IdentNode: 'platform' {originalText=platform}
但是,如果我在查詢中只堅持使用一個@ManyToOne
變量,例如我刪除了company
或platform
(例如: "SELECT id, gameName, company FROM Game g WHERE g.id =:id"
,則查詢作品。
我在哪里 go 錯了,是否可以有多個@ManyToOne
關系引用一個實體中的多個實體並使其運行? 還是我應該堅持使用@ManyToMany
? 如果是這樣,怎么做?
謝謝
正如布魯諾阿爾維斯評論的那樣,這個問題有兩種解決方案
ManyToOne/ManyToMany 對您的請求無關緊要
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.