该注解,是Hibernate、morphia等框架的注解。
1)Hibernate中:
实体类中使用了@Table注解后,想要添加表中不存在字段,就要使用@Transient这个注解了。在网上找的方法是要将这个注解添加到自定义字段的get方法上,这样做了之后程序报错,最后试了将该注解添加到定义该字段的头部即可,例如:
即放在实体类的成员变量上部。
- @Transient
- private String str;
2)morphia中:
根据我之前的文章知道,mongodb数据库是没有数据库字段的。但就不存在”想要添加表中不存在字段,就要使用@Transient这个注解了“的问题,那为什么还是用@Transient?
答:
因为使用morphia框架,一般情况下,保存原始和基本类型的属性到Mongo中,你不必为他们添加任何注解。但是如果你不想该实体类中的某个字段(如
//这个是常量。引入这个常量,是为了:1)直接调用即可,不用每次都输入“telNum”。2)便于代码的可读性,如果你在程序中输入“telNum”别人不明白是什么,你固定写到某个位置,大家一看就明白了 3)也可以防止别写程序时将“telNum”敲错,因为使用"对象名.成员变量名"输入“.”的时候会有可能代码提示,选择即可,这样是不可能出错的。
public final static String telNum= "telNum";
//类似于jf工程中,如下的用法
//public class ProjectContants {
//public static String CURRENT_USER = "CURRENT_USER";
//public static String CURRENT_ORGAN = "CURRENT_ORGAN";
//public static String CURRENT_PROJECT = "CURRENT_PROJECT";
//public static String RANDOM_IMAGE_CODE="RANDOM_IMAGE_CODE";
//}
)作为document存入mongodb数据库中,那么你就要加上@Transient。不然,当你执行mongodb的findAndModify等新增、修改操作时,你不想写入mongodb的某个字段,也写入mongodb数据库中了。
http://blog.csdn.net/z69183787/article/details/52942124
默认情况下,Morphia将会试着映射所有支持的基本和原始类型到Mongo,包括这些类型的数组。 MongoDB仅仅有以下数据类型: •Integer(32位有符号值) •Long(64有符号值) •Double(64位IEEE745浮点值) •String (字符串) 这里有些有价值的转换: •float → double •byte → int •short → int •char → String 并且,依赖于你的模型中存在的类型和数据库将会试着自动为你转换。我的意思是,因为在MongoDB数据库中只存在三种数字类型(32/64有符号, 64位FP)这将相当容易转换。下面的列表为当前什么样的基本和原始类型可以被保存: •enum(在Mongo中作为String保存) •Java.util.Date(在Mongo中保存为从新纪元UTC的毫秒数) •java.util.Locale(作为字符串保存) •com.mongodb.DBRef •com.mongodb.ObjectId 正如我我们上面的例子所示,Morphia还支持java.util.List,java.util.Set和java.util.Map容器,和任何支持的原始类型的数组。如果你想把一个属性排除映射到Mongo中, 你可以使用@Transient注解: 默认情况下,Morphia把属性名作为Mongo中的字段名。这个可以通过@Property注解进行修改,指定一个名称。
|