2015-06-02 126 views
0

我使用彈簧數據jpa進行持久化。如果存在多個具有相同名稱的實體,是否有一種方法可以將一個實體標記爲默認值。像用於解決多個bean @Primary註釋東西相依問題當兩個或多個同名實體存在時選擇一個默認實體 - Spring Boot,Spring Data JPA,

@Entity(name = "ORGANIZATION") 
@Table(name = "ORGANIZATION") 
public class DefaultOrganization { 
    *** 
} 

@Entity(name = "ORGANIZATION") 
@Table(name = "ORGANIZATION") 
public class Organization { 
    *** 
} 

更新

讓我說清楚。我使用spring-boot @EntityScan註釋來執行包掃描,如果在兩個不同的包中找到兩個具有相同名稱的實體,則應該有一種方法,其中只有一個實體被選中並註冊,而另一個被拒絕。就實體名稱而言,即使我知道沒有兩個實體可以具有相同的名稱。我問這在彈簧引導和彈簧數據的JPA

@Entity(name = "ORGANIZATION") 
@Table(name = "ORGANIZATION") 
@PrimaryEntity 
public class DefaultOrganization { 
    *** 
} 

@Entity(name = "ORGANIZATION") 
@Table(name = "ORGANIZATION") 
public class Organization { 
    *** 
} 

由於DefaultOrganization標有@PrimaryEntity的背景下,DefaultOrganization應該由@EntityScan選擇,而組織,應予以拒絕。

注: @PrimaryEntity是可以由彈簧啓動處理非JPA標準定義註解@EntityScan

+0

因此您提供的「唯一」名稱不是唯一的。用戶錯誤 –

+0

您可以與我們分享您的意圖嗎?也許那麼它就更清楚你真正想要做什麼。 – DrunkenPope

+0

'@ Primary'註釋適用於bean,而不是實體。 –

回答

3

它是不可能有重複的名字,一個項目甚至是實體存在於兩個不同的實體兩個不同的包。

Reference 1

實體類名稱

默認情況下,實體名稱是實體類的非限定名稱(即,短的類名不包括包名)。不同的實體名稱可以明確地使用Entity註解的name屬性進行設置:

@Entity(name="MyName") 
public class MyEntity { 

} 

實體名稱必須是唯一的。當不同包中的兩個實體類共享相同的類名時,需要顯式實體名稱設置以避免衝突。

相關問題