Mam tabelę "AuthorFollow" mającą klucz złożony "authorId" i "userId", które są kluczami podstawowymi w "AuthorInfo "& Tabela" UserInfo ".Wywołanie java.sql.SQLException: indeks parametru poza zakresem (3> liczba parametrów, która wynosi 2)
Próbuję zapisać obiekt "AuthorFollow" w bazie danych (używam mysql). Ale ja dostaję błąd:
org.hibernate.exception.GenericJDBCException: could not insert: [com.pojo.hibernate.AuthorFollow]
.
.
.
Caused by: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
.
.
.
kod, który próbuję, aby zapisać obiekt jest:
Transaction transaction = hibernateTemplate.getSessionFactory().getCurrentSession().beginTransaction();
try {
AuthorFollow authorFollow = new AuthorFollow();
authorFollow.setAuthorId(authorInfo.getAuthorId());
authorFollow.setUserId(userInfo.getUserId());
authorFollow.setAuthorInfoByAuthorId(authorInfo);
authorFollow.setUserInfoByUserId(userInfo);
authorInfo.getAuthorFollowsByAuthorId().add(authorFollow);
userInfo.getAuthorFollowsByUserId().add(authorFollow);
updateObject(authorInfo);
updateObject(userInfo);
transaction.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
return false;
}
Pliki mapping (mapowanie te są automatycznie generowane przez IntelliJ IDEA) AuthorFollow.hbm.xml:
<hibernate-mapping>
<class name="com.pojo.hibernate.AuthorFollow" table="author_follow" catalog="book">
<composite-id mapped="true" class="com.pojo.hibernate.AuthorFollowPK">
<key-property name="userId" column="user_id"/>
<key-property name="authorId" column="author_id"/>
</composite-id>
<many-to-one name="authorInfoByAuthorId" class="com.pojo.hibernate.AuthorInfo">
<column name="author_id" not-null="true"/>
</many-to-one>
<many-to-one name="userInfoByUserId" class="com.pojo.hibernate.UserInfo">
<column name="user_id" not-null="true"/>
</many-to-one>
</class>
</hibernate-mapping>
AuthorInfo.hbm.xml (pokazano tylko na mapowanie AuthorFollow)
<set name="authorFollowsByAuthorId" inverse="true">
<key>
<column name="author_id" not-null="true"/>
</key>
<one-to-many not-found="ignore" class="com.pojo.hibernate.AuthorFollow"/>
</set>
UserInfo.hbm.xml (widocznych mapowanie tylko dla AuthorFollow):
<set name="authorFollowsByUserId" inverse="true">
<key>
<column name="user_id" not-null="true"/>
</key>
<one-to-many not-found="ignore" class="com.pojo.hibernate.AuthorFollow"/>
</set>
UPDATE:
Hibernate: select userinfo0_.user_id as user1_21_, userinfo0_.first_name as first2_21_, userinfo0_.last_name as last3_21_, userinfo0_.user_gender as user4_21_, userinfo0_.user_img as user5_21_, userinfo0_.user_birthdate as user6_21_, userinfo0_.user_occupation as user7_21_, userinfo0_.user_qualification as user8_21_, userinfo0_.user_postal_code as user9_21_, userinfo0_.user_address as user10_21_, userinfo0_.user_city as user11_21_, userinfo0_.user_contact as user12_21_, userinfo0_.user_balance as user13_21_, userinfo0_.user_website as user14_21_, userinfo0_.email_verified as email15_21_, userinfo0_.email_id as email16_21_ from book.user_info userinfo0_ where userinfo0_.email_id=?
Hibernate: select authorinfo0_.author_id as author1_3_0_, authorinfo0_.author_name as author2_3_0_, authorinfo0_.author_pen_name as author3_3_0_, authorinfo0_.author_gender as author4_3_0_, authorinfo0_.author_description as author5_3_0_, authorinfo0_.author_blog_link as author6_3_0_, authorinfo0_.author_img as author7_3_0_, authorinfo0_.author_lives as author8_3_0_, authorinfo0_.author_born as author9_3_0_, authorinfo0_.author_died as author10_3_0_, authorinfo0_.author_notable_works as author11_3_0_ from book.author_info authorinfo0_ where authorinfo0_.author_id=?
Hibernate: select userinfo0_.user_id as user1_21_, userinfo0_.first_name as first2_21_, userinfo0_.last_name as last3_21_, userinfo0_.user_gender as user4_21_, userinfo0_.user_img as user5_21_, userinfo0_.user_birthdate as user6_21_, userinfo0_.user_occupation as user7_21_, userinfo0_.user_qualification as user8_21_, userinfo0_.user_postal_code as user9_21_, userinfo0_.user_address as user10_21_, userinfo0_.user_city as user11_21_, userinfo0_.user_contact as user12_21_, userinfo0_.user_balance as user13_21_, userinfo0_.user_website as user14_21_, userinfo0_.email_verified as email15_21_, userinfo0_.email_id as email16_21_ from book.user_info userinfo0_ where userinfo0_.user_id=?
Hibernate: select authorfoll0_.author_id as author2_3_1_, authorfoll0_.user_id as user1_1_, authorfoll0_.author_id as author2_1_, authorfoll0_.user_id as user1_1_0_, authorfoll0_.author_id as author2_1_0_ from book.author_follow authorfoll0_ where authorfoll0_.author_id=?
Hibernate: select authorfoll0_.user_id as user1_21_1_, authorfoll0_.user_id as user1_1_, authorfoll0_.author_id as author2_1_, authorfoll0_.user_id as user1_1_0_, authorfoll0_.author_id as author2_1_0_ from book.author_follow authorfoll0_ where authorfoll0_.user_id=?
Hibernate: insert into book.author_follow (author_id, user_id) values (?, ?)
Czy mógłbyś. przełącz w ślad hibernacji z ' true ' in 'hibernate.cfg.xml' i opublikuj wynik? Coś w wygenerowanym komunikacie wydaje się błędne. –
Johanna
zrobione, dodałem teraz ślad. –