[jboss-user] [EJB3] - Inverse OneToOne and JoinTable problem

Chris Ball do-not-reply at jboss.com
Fri Jan 21 12:39:39 EST 2011

Chris Ball [http://community.jboss.org/people/chrisxl] created the discussion

"Inverse OneToOne and JoinTable problem"

To view the discussion, visit: http://community.jboss.org/message/582412#582412

I have come across a problem in JBoss 4.2.2 (hibernate 3.2.4) where I cannot insert into or select from an entity (CompanyCar) that is the inverse-side of a @OneToOne join to a second entity (Employee), when the second entity has a @ManyToOne join that uses a @JoinTable.

This is also a problem in JBoss 5.1, but it appears to have been “fixed” in JBoss 6.0 (hibernate 3.6). Unfortunately we are not yet in a position to consider upgrading the version of JBoss we use.

I am looking for a workaround that we can use for JBoss 4.2.2. Also I’d like to know if this looks like a genuine bug, or whether I have got something wrong with my entity model that for some reason the hibernate spec has been changed to allow in the later release.

My entity model:

public class CompanyCar implements Serializable {
      private Long id;
      private Employee employee;
      @Column(name = "id", nullable = false)
      public Long getID() {
            return id;
      public void setID(final Long id) {
            this.id = id;
      @OneToOne(mappedBy="car",optional = true, fetch = FetchType.LAZY)
      public Employee getEmployee() {
            return employee;
      public void setEmployee(final Employee employee) {
            this.employee = employee;
public class EmployeeTeam implements Serializable {
      private String teamName;
      private Collection<Employee> members;
      @Column(name = "teamname", length = 30, nullable = false)
      public String getTeamName() {
            return teamName;
      public void setTeamName(final String teamName) {
            this.teamName = teamName;
      @OneToMany(mappedBy = "team")
      public Collection<Employee> getMembers() {
            return members;
      public void setMembers(final Collection<Employee> members) {
            this.members = members;
public class Employee implements Serializable {
      private String employeeID;
      private CompanyCar car;
      private EmployeeTeam team;
      @Column(name = "employeeid", length = 36, nullable = false)
      public String getEmployeeID() {
            return employeeID;
      public void setEmployeeID(final String employeeID) {
            this.employeeID = employeeID;
      @OneToOne(optional = true, fetch = FetchType.LAZY)
      @JoinColumn(name = "companycarid", referencedColumnName = "id")
      public CompanyCar getCar() {
            return car;
      public void setCar(final CompanyCar car) {
            this.car = car;
      @ManyToOne(fetch = FetchType.LAZY)
                  name = "employeeteammembers", 
                  joinColumns = { @JoinColumn(name = "employee_fk", referencedColumnName ="employeeid") }, 
                  inverseJoinColumns = @JoinColumn(name = "team_fk", referencedColumnName = "teamname")
      public EmployeeTeam getTeam() {
            return team;
      public void setTeam(final EmployeeTeam team) {
            this.team = team;

On inserting a CompanyCar:

            final CompanyCar car = new CompanyCar();

not-null property references a null or transient value: uk.co.exel.test.CompanyCar.employee

On loading a CompanyCar:

Invalid column name 'companycarid'

The following SQL is generated by hibernate. It is attempting to join the CompanyCar directly to EmployeeTeam?

select companycar0_.id as id0_, companycar0_1_.employee_fk as employee0_3_ 
from companycars companycar0_ 
left outer join employeeteams companycar0_1_ on companycar0_.id=companycar0_1_.companycarid

Many thanks for any comments / suggestions.


Reply to this message by going to Community

Start a new discussion in EJB3 at Community

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110121/6343fe0c/attachment-0001.html 

More information about the jboss-user mailing list