我無法使用Hibernate,Tomcat和MySQL讀取引用實體的id。無法從servlet上下文中檢索到hibernate外鍵
實施例,運行下面的代碼:
List<UserAccount> users = listEntities(UserAccount.class);
for (UserAccount user : users) {
UserAccountStatusCatalog status = user.getStatus();
System.out.println("[User (" + user.getId() + ") : "+user.getAccountName()+"] - " + status + ": " + status.getId());
}
可否使用SQL服務器DB
給在一個簡單的Java應用程序或servlet上下文下面的輸出[用戶(1):系統] - 懸浮:15020
[用戶(2):管理員] - 有效:15010
[用戶(4):試驗] - 有效:15010
而這從使用MySQL DB
一個servlet上下文內[用戶(1):系統] - 暫停:0
[用戶(2):管理員] - 有效:0
[用戶( 4):測試] - 活動:0
這是運行Java在Tomcat 7的服務器上8
數據庫爲MySQL 5.5和我使用休眠核心:5.1.0.Final
我已經測試過一個很多不同的方法,例如更改Hibernate版本,將數據庫更改爲MariaDB(不工作)和SQL服務器(完美工作)。
我已經在Tomcat 6,7和8(同樣的結果,不工作)測試
測試基於java 7和8(同樣的結果,不工作)
實體
@Entity(name = "UserAccount")
@Table(name = "user_account")
@Audited
public class UserAccount {
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name="id_status", nullable=false, [email protected](name = ForeignKeys.FK_USERACCOUNT_STATUS))
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
private UserAccountStatusCatalog status;
[...]
@Entity
@Table(name="user_account_status_catalog")
public class UserAccountStatusCatalog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = ID_COLUMN_NAME, nullable = false)
private int id;
@Column(name = "name", nullable = false)
private String name;
}
所以我的問題是
有沒有人有任何關於這個特定問題的經驗或有任何關於我可以繼續調試的指針,因爲我完全不知道該怎麼做。
你可以共享'UserAccount'和'UserAccountStatusCatalog'的代碼。 –