Java Hibernate@Embeddeble类抛出;SQLServerException:无效的列名";对于未引用的列

Java Hibernate@Embeddeble类抛出;SQLServerException:无效的列名";对于未引用的列,java,hibernate,embeddable,Java,Hibernate,Embeddable,我一直在为这件事大发雷霆。我有一个类像这样拉动对象: public UserDTO getUser(String login) { String jql = "select entity from User as entity where entity.abcUserId = :userID "; Query query = _entityManager.createQuery(jql) .setParameter("userID", login);

我一直在为这件事大发雷霆。我有一个类像这样拉动对象:

public UserDTO getUser(String login)
{
    String jql = "select entity from User as entity  where entity.abcUserId = :userID ";

    Query query = _entityManager.createQuery(jql)
            .setParameter("userID", login);
    try
    {
        Object user = query.getSingleResult();
        return ((User) user).extractObject();
    }
    catch(NoResultException e)
    {
        LOG.error(e.getMessage());
        return null;
    }

}
在课堂上,它在拉动:

@Entity
@Table(name="ABC_User")
public class User implements Serializable,EntityObject<UserDTO>
{

private static final long   serialVersionUID    = 1L;

private Long id;
private String abcUserId;
private Company company;
private List<UserPreference> userPreferences;

@Id
@GeneratedValue
public Long getId()
{
    return id;
}

public void setId(Long id)
{
    this.id = id;
}

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Company_ID", nullable=false)
public Company getCompany()
{
    return company;
}

public void setCompany(Company customer)
{
    this.company = customer;
}

/**
 * @return the userPreference
 */
@ElementCollection(fetch=FetchType.EAGER)
@JoinTable(name="ABC_USER_PREFERENCES")
@Cascade(value={org.hibernate.annotations.CascadeType.ALL})
public List<UserPreference> getUserPreferences()
{
    if(userPreferences == null)
    {
        userPreferences = new ArrayList<UserPreference>();
    }
    return userPreferences;
}

/**
 * @param userPreference the userPreference to set
 */
public void setUserPreferences(List<UserPreference> userPreferences)
{
    this.userPreferences = userPreferences;
}

/**
 * @return the abcUserId
 */
@Column(name="ABC_USER_ID", length=10, nullable=false)
public String getAbcUserId()
{
    return abcUserId;
}

/**
 * @param abcUserId the abcUserId to set
 */
public void setAbcUserId(String abcUserId)
{
    this.abcUserId = abcUserId;
}
所以,冗长的代码块被屏蔽了,有些东西被审查了,这是行不通的。每次我尝试从数据库中提取用户时,它都会抛出“SQLServerException:无效的列名'User_id'”。用户id在我的项目中从未被引用(我已经检查过),它始终是abc用户。我可以看到对象在Eclipse调试器中被拉到一起,它会添加用户首选项列表,然后崩溃。如果我注释掉用户类的UserPreferences部分,它将成功地拉入(并在使用它们的其他地方中断)


我遗漏了什么?

请参阅下面的代码部分

@Column(name="ABC_USER_ID", length=10, nullable=false)
public String getAbcUserId()
{
    return abcUserId;
}
检查表是否具有列名“ABC\U USER\U ID”。
然后,尝试将此代码放在@JoinTable部分之前参见下面的代码部分

@Column(name="ABC_USER_ID", length=10, nullable=false)
public String getAbcUserId()
{
    return abcUserId;
}
检查表是否具有列名“ABC\U USER\U ID”。
然后,尝试将此代码放在@JoinTable部分之前

尝试为
User.id
定义
@Column
。它有一个
@Id
,但没有
@列
。可能是Hibernate假定该字段的列为_id,从而产生“User id”,当它尝试将返回的数据映射到对象时,找不到它。

尝试为
User.id
定义
@column
。它有一个
@Id
,但没有
@列
。可能是Hibernate假设该字段的列为_id,导致“User\u id”,当它尝试将返回的数据映射到对象时,找不到该列。

它确实有一个名为“ABC\u User\u id”的列,而将这些方法混洗似乎没有帮助。它确实有一个名为“ABC\u User\u id”的列,对方法的乱序似乎没有帮助,它确实有一个名为“ABC_USER_ID”的列,而对方法的乱序似乎没有帮助。