Unknown column 'accountnam_.pk' in 'field list'
kkangas Feb 18, 2005 4:46 AMHi,
(JBOSS: 4.0.1 SP1,
EJB3: preview3
AOP: 1.1,
jboss-remoting.jar is from 4.0.1 RC1 version, SP1 gave exception).
I have 1:n bidirectional relationship and I'm not able to have it right with EJB3. In select is seems to put pk class as field into the SQL select.
This happens when I try to cfreate new persistence objects (Account and AccountName).
Here is select from JBoss log:
11:33:59,173 INFO [STDOUT] Hibernate: select accountnam_.accountId, accountnam_.locale, accountnam_.name as name15_, accountnam_.explanation as explanat4_15_, accountnam_.pk as pk15_, accountnam_.id
as id15_ from accountname accountnam_ where accountnam_.accountId=? and accountnam_.locale=?
and the classes. One table is ACCOUNT and class is (snipped):
@Entity @SecurityDomain("other") @Table(name = "account") public class Account implements Serializable, AccountLocal { private long id; private Collection<AccountName> names = new ArrayList<AccountName>(); @Id(generate = GeneratorType.IDENTITY) public long getId() { return id; } public void setId(long id) { this.id = id; } @OneToMany(mappedBy="account", cascade = CascadeType.ALL) @JoinColumn(name = "accountId", referencedColumnName="id") public Collection<AccountName> getNames() { return names; } public void setNames(Collection<AccountName> names) { this.names = names; } ... }
then the other ACCOUNTNAME and class (snipped):
@Entity @SecurityDomain("other") @Table(name = "accountname") public class AccountName implements Serializable, AccountNameLocal { private AccountNamePK pk; private Account account; @EmbeddedId( { @AttributeOverride(name = "accountId"), @AttributeOverride(name = "locale") }) public AccountNamePK getPk() { return pk; } public void setPk(AccountNamePK pk) { this.pk = pk; } @Transient public long getAccountId() { return getPk().getAccountId(); } @Transient public String getLocale() { return this.getPk().getLocale(); } @ManyToOne @JoinColumn(name = "id") public Account getAccount() { return account; } public void setAccount(Account account) { this.account = account; } ... }
and finally pk class (snipped, again)
@Embeddable public class AccountNamePK implements Serializable { private long accountId; private String locale; ... }
-- kari kangas