Я использовал клавиши 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;
}