#hibernate #exception
#гибернация #исключение
Вопрос:
Следующее мое.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mmm.data.UserRating" table="userratings" catalog="mmm">
<composite-id name="id" class="mmm.UserRatingId">
<key-property name="userId" type="int">
<column name="userId" />
</key-property>
<key-property name="recipeId" type="int">
<column name="recipeId" />
</key-property>
</composite-id>
<many-to-one name="recipe" class="com.mmm.data.Recipe" update="false" insert="false" fetch="select">
<column name="recipeId" not-null="true" />
</many-to-one>
<many-to-one name="user" class="com.mmm.data.User" update="false" insert="false" fetch="select">
<column name="userId" not-null="true" />
</many-to-one>
<property name="rating" type="int">
<column name="rating" not-null="true" />
</property>
</class>
</hibernate-mapping>
Вот Java:
public class UserRating implements java.io.Serializable
{
private UserRatingId id;
private Recipe recipe;
private User user;
private int rating;
/**
*
*/
public UserRating()
{
}
/**
*
* @param id
* @param recipes
* @param users
* @param rating
*/
public UserRating( UserRatingId id,
Recipe recipes,
User users,
int rating )
{
this.id = id;
this.recipe = recipes;
this.user = users;
this.rating = rating;
}
public UserRating( UserRatingId id )
{
this.id = id;
}
/**
*
* @return
*/
public UserRatingId getId()
{
return this.id;
}
/**
*
* @param id
*/
public void setId(UserRatingId id)
{
this.id = id;
}
/**
*
* @return
*/
public Recipe getRecipe()
{
return this.recipe;
}
/**
*
* @param recipe
*/
public void setRecipe(Recipe recipe)
{
this.recipe = recipe;
}
/**
*
* @return
*/
public User getUser()
{
return this.user;
}
/**
*
* @param user
*/
public void setUser(User user)
{
this.user = user;
}
/**
*
* @return
*/
public int getRating()
{
return this.rating;
}
/**
*
* @param rating
*/
public void setRating(int rating)
{
this.rating = rating;
}
}
public class UserRatingId implements java.io.Serializable
{
private int userId;
private int recipeId;
/**
*
*/
public UserRatingId()
{
}
/**
*
* @param userId
* @param recipeId
*/
public UserRatingId( int userId,
int recipeId )
{
this.userId = userId;
this.recipeId = recipeId;
}
/**
*
* @return
*/
public int getUserId()
{
return this.userId;
}
/**
*
* @param userId
*/
public void setUserId(int userId)
{
this.userId = userId;
}
/**
*
* @return
*/
public int getRecipeId()
{
return this.recipeId;
}
/**
*
* @param recipeId
*/
public void setRecipeId(int recipeId)
{
this.recipeId = recipeId;
}
/**
*
*/
public boolean equals( Object other )
{
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof UserRatingId))
return false;
UserRatingId castOther = (UserRatingId) other;
return (this.getUserId() == castOther.getUserId())
amp;amp; (this.getRecipeId() == castOther.getRecipeId());
}
/**
*
*/
public int hashCode()
{
int result = 17;
result = 37 * result this.getUserId();
result = 37 * result this.getRecipeId();
return resu<
}
}
Когда я делаю «из UserRating ur, где ur.RecipeID = :RecipeID и rr.userId = :userId»;
получаем: не удалось создать начальную SessionFactory.org.hibernate.Исключение HibernateException: невозможно создать экземпляр tuplizer по умолчанию [org.hibernate.tuple.component.PojoComponentTuplizer]
Есть идеи, почему? Чего не хватает?
Комментарии:
1. можете ли вы опубликовать другие определения классов
Ответ №1:
Я подозреваю, что у вас здесь неправильное объявление class="mmm.UserRatingId"
. Вы имели в виду class="com.mmm.data.UserRatingId"
? (исправлено имя пакета для класса идентификатора)
Комментарии:
1. Спасибо — это было проблемой плюс еще немного небольшой семантики в файле Java. Большое спасибо
2. Хорошо, так что только вышеуказанное решило проблему, верно? (помимо других небольших известных)
3. круто! тогда примите это как ответ. (поскольку здесь опубликовано два ответа)
Ответ №2:
Привет, у меня однажды была такая же ошибка, и причина была в безопасности, которая не позволяет JVM Domino создавать экземпляры некоторых классов.
Вот мой java.policy, который вы можете найти в файле jvm lib security java.policy для справки:
// Standard extensions get all permissions by default
grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};
// default permissions granted to all domains
grant {
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See "http://java.sun.com/notes" for more information.
permission java.lang.RuntimePermission "stopThread";
// позволяет любому прослушивать непривилегированные порты
с разрешением java.net.SocketPermission «localhost:1024-«, «слушать»;
// «стандартные» свойства, которые могут быть прочитаны кем угодно
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
permission java.util.PropertyPermission "javax.realtime.version", "read";
permission java.security.AllPermission;
};
// Notes java code gets all permissions
grant codeBase "file:${notes.binary}/*" {
permission java.security.AllPermission;
};
grant codeBase "file:${notes.binary}/rjext/*" {
permission java.security.AllPermission;
};
grant codeBase "file:${notes.binary}/ndext/*" {
permission java.security.AllPermission;
};
grant codeBase "file:${notes.binary}/xsp/-" {
permission java.security.AllPermission;
};
grant codeBase "file:${notes.binary}/osgi/-" {
permission java.security.AllPermission;
};