Хочу выразить огромную благодарность автору за проделанную работу. Его уроки помогли мне заложить крепкий фундамент для дальнейшего изучения этого замечательного языка и связанных с ним технологий
Респект за хороший урок. Данный формат для нас учеников(мучеников) очень востребован. На основе таких уроков можно за бабахать какой нудь свой небольшой проект.
Честно говоря я не планировал и не знаю, есть ли спрос на эту тему. Но если коммент наберет некоторое количество лайков или кто то присоединится к пожеланию, то обязательно что то сделаем.
Спрос на Spring Boot огромен, Spring куда популярней и проще EE классического, буду рад урокам по Spring Boot, очень хорошо излагаете материал, а это редкость.
наоборот, Спринг куда важнее ЕЕ, потому что, Спринг полностью заменяет ЕЕ, у него постоянные обновления и доработки, на ЕЕ Оракл давно забили, выпуская раз на пару лет. Спринг в разы проще и удобней, нужно меньше писать, не нужен xml в 90% случаях, проще ориентироваться и не нужно блуждать в xml
Spring это FrameWork, на который сейчас есть спрос, изучать его самостоятельно очень сложно, так как легко запутаться в его дебрях.....Я присоединяюсь к данному вопросу....
Здравствуйте, такая ситуация: добавил в entity поле bollean и при создании ругается говорит синтаксическая ошибка. [2017-04-17 10:18:21,538] Artifact logic-1.0.0.jar: Error during artifact deployment. See server log for details. [2017-04-17 10:18:21,538] Artifact logic-1.0.0.jar: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"logic-1.0.0.jar#postgresPU\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"logic-1.0.0.jar#postgresPU\": javax.persistence.PersistenceException: [PersistenceUnit: postgresPU] Unable to build Hibernate SessionFactory Caused by: javax.persistence.PersistenceException: [PersistenceUnit: postgresPU] Unable to build Hibernate SessionFactory Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create table Insurance (id int8 not null, beginDate timestamp, check boolean, endDate timestamp, getPerson1Prava varchar(255), getPerson2Prava varchar(255), getPerson3Prava varchar(255), person1Name varchar(255), person2Name varchar(255), person3Name varchar(255), auto_id int8, client_id int8, insurer_id int8, price_id int8, type_id int4, primary key (id))] Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near \"boolean\" Позиция: 70"},"WFLYCTL0412: Required services that are not installed:" => ["jboss.persistenceunit.\"logic-1.0.0.jar#postgresPU\""],"WFLYCTL0180: Services with missing/unavailable dependencies" => undefined} Что делать в этом случае?
CDI bean указан как @SessionScoped Аналогично есть поля логина и пароля. когда делаю action на баттоне то поля не заполняются, они пустые почему? Когда ставишь брейкпоинты на гетеры и сетеры пароля и логина, то они заполняют поля все нормально. Но бины всегда разные, почему так? тоесть на одина бин пароль устанавливает, а на другой логин, а когда заходишь на экшен авторизации то там другой бин и там уже все поля соответственно пустые. Вроде все аналогично отличия минимальны. В чем проблема? если дело в то это я проставил
У меня такая фигня бывала, когда я делал импорт SessionScoped из пакета javax.faces.bean, то есть import javax.faces.bean.SessionScoped; Для CDI нужно делать import javax.enterprise.context.SessionScoped; Если дело не в этом - пиши снова.
Здравствуйте! Такой вопрос: как правильно инжектить cdi beanы друг в друга(для того чтобы получить данные из них). У меня есть: @Named @SessionScoped public class UserDataBean implements Serializable{ private UserData userData; @EJB private InsurerDataManager dataManager; @Inject private AuthorizeBean authorizeBean; .... } AuthorizeBean содержит ссылку на пользователя который сделал вход. Мне в бине UserDataBean нужно получить из бина AuthorizeBean ссылку на пользователя. Как это сделать? Вот этот inject не работает. Точнее он инжектирует другой бин который является абсолютно пустым. Скорее я не правильно делаю что то.
Циклическая зависимость, то есть ссылки друг на друга - вообще не очень хорошая идея. Лучше вынести такую логику в третий бин, внутрь которого можно инжектить первые два.
Почему же ссылки друг на друга? у меня тольо UserDataBean ссылается на AuthorizeBean. тогда нужно сделать class AllBeans{ @Inject private AuthorizeBean authorizeBean; @Inject private UserDataBean userdata; //гетеры и сетеры } так что ли?
Все равно не понимаю как получить в UserDataBean бин AuthorizeBean. Даже если сделаю такоой бин в котором будут все остальные бины AllBeans, то это не даст мне получить доступ из UserDataBean в другие бины. Получается надо в UserDataBean инжектить AllBeans. Это опять циклическая зависимость.. @Named @SessionScoped public class UserDataBean implements Serializable{ private UserData userData; @EJB private InsurerDataManager dataManager; @Inject private AuthorizeBean authorizeBean; public UserData getUserData() { return userData; } public void setUserData(UserData userData) { this.userData = userData; } public void updateData(){ dataManager.getInsurerData(authorizeBean.getInsurer()); } } @Named @SessionScoped public class AllBeans implements Serializable{ @Inject private UserDataBean dataBean; @Inject private AuthorizeBean authorizeBean; } @Named @SessionScoped public class AuthorizeBean implements Serializable{ private String login; private String password; private boolean auth; private Insurer insurer; private Admin admin; @EJB private AuthorizeManager authorizeManager; ...... } Это не решает проблему...
Я, видимо, не так понял. Понял, что "друг в друга" как зависимость друг от друга. Если нет циклических зависимостей, то написано все правильно - достаточно аннотации @Inject. Если бин каждый раз новый и пустой, то скорее всего у него неправильный Scope. Надо проследить, чтоб был обязательно SessionScope.
Я вам выше написал сами классы. Везде SessionScope и они импортируются от import javax.enterprise.context.SessionScoped; Я тоже не понимаю в чем проблема?
Кароче теперь такая ошибка: В базе есть страховщик(@OneToMany на страховку). у него есть сущности логин пароль имя и фамилия. Также есть есть сущность страховка(@ManyToOne). Есть страховщик: ви,123,вася, иванов. и аа,1234,антон,андреев. На васю ссылается таблиблица страховка по id. На антона не ссылается. Теперь когда я с базы делаю селект на антона то он его мне возвращает. а на васю выкидывает exception. Почему так? запрос выглядит так: Query query = entityManager.createQuery("select a from Insurer a where a.login = :log and a.password = :pas"); query.setParameter("log", StringUtils.lowerCase(login)); query.setParameter("pas", StringUtils.lowerCase(password)); Insurer insurer; try { insurer = (Insurer) query.getSingleResult(); } catch (Exception e){ e.printStackTrace(); return null; } return insurer;
Возможно потому что у меня: public class Insurer { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String fName; private String sName; private String mName; private String login; private String password; @OneToMany(mappedBy = "insurer") private List insuranceList; ... } имеет лист Страховок? А вы бы не могли мне скинуть почту например, чтобы я мог вам более нагладно задавать вопросы,отправлять фотографии и код? Могу еще на bitbucket залить проект
bitbucket.org/dreamteamssau/insuranceservice вот битабкет тут основные классы: view/../auth/.. logic/../auth/.. logic/../domain/... view/.../web-app/index.xhtml
Если исключение NoResultException, то надо перепроверять сами данные, а запрос выглядит верно. Скорее всего не совпадают логин или пароль. Бывает так, что где то закрался пробел, например или перевод строки. Кстати toLowerCase для пароля не очень удачное решение - ведь там зачастую важен регистр букв.