Hibernate w JPA nie startuje.

Hibernate w JPA nie startuje.
PJ
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:26
0

Nie chce mi odpalić apka. Wszystkie jest testowe i brzydko napisane chodzi tylko aby sie odpaliło.

persistence.xml

Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="hib">
	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	<class>Osoba</class>

	<properties>
	<property name="hibernate.connection.username" value="postgres"/>
	<property name="hibernate.connection.password" value="********"/>
	<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
	<property name="hibernate.connection.url" value="jdbc:postgresql://localhost/testowa"/>
	<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
	<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
	
	 
	</properties>
	</persistence-unit>
</persistence>
 

Serwlet który ma to odpalić

Kopiuj
 @WebServlet("/index")
public class index extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static EntityManagerFactory emf;
	EntityManager em;

	public index() {
		super();
		// TODO Auto-generated constructor stub
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		emf = Persistence.createEntityManagerFactory("hib");
		em = emf.createEntityManager();
		

	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

Wiem wiem w servlecie nie powinno byc danych ale to tylko test.

Encja

Kopiuj
@Entity
@Table(name="osoba")
public class Osoba{
	
	@Id
	@GeneratedValue
	int id;
	String imie;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getImie() {
		return imie;
	}
	public void setImie(String imie) {
		this.imie = imie;
	}
	

	
}
 

widok projektu
http://zapodaj.net/63bd3d4eac16b.png.html

edytowany 3x, ostatnio: PoczątkowyJEE
airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

Co to dla Ciebie znaczy 'nie chce się odpalić'?

PJ
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:26
0

a sorki zapomniałem.
Otrzymuję taki zwrot. Do projektu JPA dodaje sobie z Project Facets

Kopiuj
SEVERE: Servlet.service() for servlet [index] in context with path [/hib] threw exception
javax.persistence.PersistenceException: [PersistenceUnit: hib] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at index.doGet(index.java:24)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver org.postgresql.Driver class not found
	at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:107)
	at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
	at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:77)
	at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2283)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2279)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1748)
	at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
	... 23 more
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [org.postgresql.Driver]
	at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:141)
	at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:104)
	... 37 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.postgresql.Driver
	at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$1.findClass(ClassLoaderServiceImpl.java:99)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:138)
	... 38 more
2012-11-05 20:00:54 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop
INFO: HHH000030: Cleaning up connection pool [null]
 
EM
jesteś pewien, że masz org.postgresql.Driver?
PJ
eee nie potrafię odpowiedzieć, tak w necie jest wszędzie w konfiguracji więc pożyczyłem
EM
a czego używasz jako serwera aplikacji? bo ja miałem...cholera tylko nie wiadomo czy dokładnie to samo...ale ok. Chodziło o to, że nie po stronie projektu, tylko po stronie jboss-a przechowywałem wszystkie konfiguracje odnośnie driver-a i połączenia do bazy. Poczytaj sobie o jta-data-source. Jak używasz JBossa napiszę Ci jak ja połączyłem się z bazą Oracle. btw zapewne identycznie robi się to z posgressem no i pewnie na innych serwerach aplikacyjnych niż jboss
PJ
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:26
0

Na Tomcata to wrzucam tzn projekt.
Wydaje mi się że pies pogrzebany jest w tym pliku
persistence.xml
bo im dłużej się mu przyglądam tym mam więcej wątpliwości. Jednak nie wiem co i jak poprawić.

EM
  • Rejestracja:około 18 lat
  • Ostatnio:około 9 lat
0

tak i nie. Wydaje mi się, że masz ten problem co ja miałem jakiś rok temu.
Brakuje Ci po stronie Tomcata drivera i konfiguracji do niego. Wydaje się, że ten stacktrace dotyczy już samego tomcat-a, a jar z driverem, który posiadasz w swoim projekcie nie jest brany pod uwagę.
Ja bym to załatwił tak:

  1. Wgrałbym do tomcata jara - postgres....jar - to musisz wygooglać gdzie dokładnie (w jboss 7 jest to lokalizacja - modules\com)
  2. Tomcat powinien mieć jakiś plik konfiguracyjny (odpowiednik standalone.xml w Jboss), w którym dodasz coś w podobnego co ja dodałem w jboss-ie
Kopiuj
<datasource jta="true" jndi-name="java:/jdbc/moje_jndi" pool-name="OracleDS" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>jdbc:oracle:thin:@adres_ip:1521:xe</connection-url>
                    <driver>oracle</driver>
                    <security>
                        <user-name>username</user-name>
                        <password>pass</password>
                    </security>
                </datasource>

czyli dodajesz konfigurację połączenia do bazy
Oraz

Kopiuj
 
   <driver name="oracle" module="com.oracle.db">
     <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
  </driver>

definiujesz driver

  1. no i w końcu persistance.xml
Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="mojeJPA" transaction-type="RESOURCE_LOCAL">
 	<provider>org.hibernate.ejb.HibernatePersistence</provider>
 	
 	<jta-data-source>java:/jdbc/moje_jndi</jta-data-source>
 
 	<!-- list of mapping objects -->
	<class>Class1</class>
    <properties>
       <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
	   <property name="hibernate.show_sql" value="true" />
	   <property name="hibernate.format_sql" value="false" />
	   <property name="hibernate.use_sql_comments" value="true" />
	   <property name="hibernate.connection.release_mode" value="after_statement" />
    </properties>
  </persistence-unit>
</persistence>

ja tak rozwiązałem podobny problem. Niestety nigdy nie pracowałem z tomcatem i po prostu go nie znam,ale poszukaj czegoś podobnego dla posgress-a i tomcat-a. Mam nadzieję, że choć trochę naprowadzi Cię to na rozwiązanie. Daj znać jak to rozwiązałeś. pzdr

airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

Biblioteka JDBC Postgresq leży u Ciebie gdzieś na dysku C. Możliwe, że Tomcat nie odnajduje jej tam, przenieś ją do katalogu WEB-INF/lib

edytowany 1x, ostatnio: airborn
PJ
Wszystkie biblioteki obecnie mam i w Tomcata wrzucone i w projekt
PJ
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:26
0

po wgraniu sterownika jdbc na Tomcata wygląda jakby się coś ruszyło. Fakt błędy idą nadal aż miło ale teraz chyba już sa z tego cze coś sama baza i encja jest źle a ja sam źle wykonuje operacje na niej.

EM
czyli mój trop był ok. spoko. daj znać jak się coś dalej ruszy
PJ
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:26
0

Wali błędami przy operacji w mojej opini wykonywanej poprawnie

Kopiuj
SEVERE: Servlet.service() for servlet [index] in context with path [/hib] threw exception
java.lang.IllegalArgumentException: Named query not found: Select * from osoba
	at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:601)
	at index.doGet(index.java:27)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

chce pobrać bazy testowa tabeli osoba wszystko. Czyli id i imie. w bazie id jest typu integer i jest not null a imie text
tak to robię:

Kopiuj
emf = Persistence.createEntityManagerFactory("hib");
		em = emf.createEntityManager();
		List<Osoba> os = this.em.createNamedQuery("Select * from osoba").getResultList(); 
PJ
dodatkowo wydaje mi się ze źle jest zrobiony plik persistence.xml bo powinno być chyba wszystko na javax a nie z hibernate bezpośrednio. tak tylko przypuszczam
EM
createQuery a nie createNamedQuery
EM
  • Rejestracja:około 18 lat
  • Ostatnio:około 9 lat
0

ale tu to trochę przesadziłęś to sie robi tak:
http://www.java2s.com/Code/Java/JPA/CreateNamedQueryWithEntity.htm

PJ
ok poszło. Błąd był jeszcze w tym ze osoba było a nie Osoba jak nazwa klasy. Teraz muszę jeszcze poprawić ten plik persistance aby w pełni z jpa korzystało bez bezpośredniego odnoszenia się do providera u mnie hibernate
PJ
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 12 lat
  • Postów:26
0

Wiecie może jak wykorzystać JPA(Hibernate) + Postgres aby działo @GenerateValue w id w encji?
Bo jakąś tablicę sekwencji muszę dodać ale jak dodaje to w adnotacji to nie ma zmian. Podpinając pod MySQL z samym @GenerateValue oczywiście nie ma problemów. A Postgres i Oracle jako klucza używają jakiejś tablicy sekwencji i nie bardzo wiem jak ugryźć ten fakt.

airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

ja korzystam z @GeneratedValue(strategy = GenerationType.IDENTITY) a po stronie Postgresa wykorzystuję type Serial jako klucz (czyli integer właśnie z sekwencją)

edytowany 1x, ostatnio: airborn
PJ
Bardzo dziękuję za pomoc faktycznie rozwiązało to problem. A przypadkiem styczności z firebirdem nie miałeś? Bo jakoś nie dostaje wcale reakcji po odpaleniu z tą baza.
airborn
Niestety nie miałem styczności.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)