Here in hibernate it is simple. We can use 2 classes into 1 table strategy.
Account.java
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Account { private AccountCompoundKey compoundKey; private int accBalance; @Id public AccountCompoundKey getCompoundKey() { return compoundKey; } public void setCompoundKey(AccountCompoundKey compoundKey) { this.compoundKey = compoundKey; } public int getAccBalance() { return accBalance; } public void setAccBalance(int accBalance) { this.accBalance = accBalance; } }AccountCompoundKey.java
import java.io.Serializable; import javax.persistence.Embeddable; @Embeddable public class AccountCompoundKey implements Serializable{ private int userId; private int accountId; public AccountCompoundKey(int userId, int accountId) { this.userId = userId; this.accountId = accountId; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public int getAccountId() { return accountId; } public void setAccountId(int accountId) { this.accountId = accountId; } }
Special Note : As a rule, the class acting as the compound primary key type must implements the Serializable interface.Test.java
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class Test { /** * @param args */ public static void main(String[] args) { AnnotationConfiguration config=new AnnotationConfiguration(); config.addAnnotatedClass(Account.class); config.configure("hibernate.cfg.xml"); new SchemaExport(config).create(true, true); SessionFactory factory=config.buildSessionFactory(); Session session=factory.getCurrentSession(); session.beginTransaction(); Account acc1=new Account(); acc1.setAccBalance(25000); acc1.setCompoundKey(new AccountCompoundKey(1133, 563545)); Account acc2=new Account(); acc2.setAccBalance(32000); acc2.setCompoundKey(new AccountCompoundKey(1136, 986456)); session.save(acc1); session.save(acc2); session.getTransaction().commit(); } }Result
0 comments:
Post a Comment