2016-02-27 2 views
0

Я использовал клавиши composit, но я передумал и удалил такие ключи в своем веб-приложении в NetBeans. Но Glassfish говорит: модуль не был развернут из-за недопустимого содержимого JoinColumns.Glassfish says uncomplete JoinColumns

Exception Description: The @JoinColumns on the annotated element [field client] from the entity class [class x.ClientOrder] is incomplete. When the source entity class uses a composite primary key, a @JoinColumn must be specified for each join column using the @JoinColumns. Both the name and the referencedColumnName elements must be specified in each such @JoinColumn. 

Я удалил все таблицы из БД, перезапустил контейнер, называемый «Очистить и построить» команду для проекта (это успеха). Но развертывание EJB не выполняется. Что делать, чтобы контейнер забыл прошлое?

Исходный код юридических лиц:

@Entity 
@Getter 
@Setter 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "roleType", discriminatorType = DiscriminatorType.STRING, length = 10) 
@NamedQuery(name=UserRole.QUERYNAME_GET_ROLE_BY_USERID_AND_TYPE, query = "SELECT ur FROM UserRole ur WHERE ur.userWR.id = :userID AND ur.roleType = :roleType") 
abstract public class UserRole implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 
    public static final String QUERYNAME_GET_ROLE_BY_USERID_AND_TYPE = "userRole_getRoleByUserIDAndType"; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    @Column 
    private String roleType; 

    @Id 
    @ManyToOne 
    @JoinColumn(name="user_id", referencedColumnName = "id") 
    private UserWithRoles userWR; 

} 


@Entity 
@Data 
@NamedQuery(name = Client.QUERYNAME_GET_ALL_CLIENTS, query="SELECT c FROM Client c") 
public abstract class Client extends UserRole 
{ 
    public static final String QUERYNAME_GET_ALL_CLIENTS = "client_GetAllClients"; 

} 


@Entity 
@Data 
@NamedQuery(name=ClientOrder.QUERYNAME_GET_CLIENT_ORDERS, query = "SELECT co FROM ClientOrder co WHERE co.client = :userID") 
public class ClientOrder implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 
    public static final String QUERYNAME_GET_CLIENT_ORDERS = "clientOrders_getClientOrders"; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    private String name; 

    @ManyToOne 
    @JoinColumn(name = "client_id", referencedColumnName = "id") 
    private Client client; 

    @OneToMany(mappedBy = "clientOrder") 
    private List<ClientOrderItem> orderItems; 

} 

ответ

0

OK. В таблице UserRole произошла ошибка. Я забыл удалить вторую аннотацию @Id в поле userWR. После того как я удалю его и перестроил приложение, он снова развернется.