2017-09-22 33 views
4

我打算將ORM集成到我的項目中,因此我使用eclipse的JPA項目來生成舊數據庫以外的實體類。共有168個實體類生成並且很好。但在nullableunique等約束條件下不會自動生成。如何在實體類中使用jpa項目eclipse生成唯一約束

比如我需要的是這樣的: -

@Column(name="USER_NAME",unique = true) 
private String userName; 

但自動生成實體後存在代碼中沒有唯一約束。我怎麼才能做到這一點?

任何建議將是有用的。

+0

如果使用Eclipse的JPA項目無法實現此功能,則可以考慮嘗試使用Hibernate/JBoss Tools中的反向工程。網上有幾篇文章,介紹如何逐步完成這一步驟,例如, https://www.mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools/ –

+0

「@ Column」註釋的'unique'屬性僅用於DDL生成,即在您正在從映射的JPA實體生成數據庫模式。它對代碼完全沒有影響。正如你正好相反的方式,那麼它有點點:https://stackoverflow.com/questions/30460596/jpa-column-unique-true-what-is-really-point-of-having-unique-屬性 –

回答

1

@Unique表示一個唯一索引,可防止索引字段中的重複值。 如果不同的實體在唯一字段中具有相同的值(類似於主鍵的行爲方式),則會在提交(或刷新)時拋出PersistenceException。 在您的爲例:

@Unique 
 
@Column(name="USER_NAME") 
 
private String userName;

+0

這不回答問題。 –

1

如果創建表的唯一約束,纔會創建。如果該表已經存在,則僅在DDL更新期間添加新列。因此,您必須手動刪除表格或將javax.persistence.schema-generation.database.action的值設置爲drop-and-create

+0

這也不回答問題。 –

2

如果您發現最低版本更新到最新版本,請在您的eclipse中檢查您的JPA版本。最新的JPA創建了我們在數據庫表中定義的所有約束。
希望這可以幫助你。

Find Latest JPA on New "JPA project screen"

1

你必須使用從Jboss的Hibernate的工具,它使您可以做一個更好的逆向工程。

http://hibernate.org/tools/

還有一堆外面被解釋如何使用Hibernate工具教程。

相關問題